Assmembling a robot from parts with physics enabled.

Ok. well I think I figured it out! Here’s my render.ls() if anyone’s curious how I got it to work how I wanted:

PandaNode render S:(CullFaceAttrib RescaleNormalAttrib)
  ModelNode camera
    Camera cam ( PerspectiveLens ) T:q(pos 0 -20 10 hpr 0 -16.6992 0)
      PerspectiveLens fov = 39.3201 30
  ForceNode gravity forcenode (1 forces)
  CollisionNode floor (1 solids) [showcase]
  ActorNode Megabyte root actornode T:(pos 0 0 5)
    ModelRoot Gun #1 model T:(pos 1.5 0 3)
      GeomNode Cube (1 geoms: S:(ColorAttrib))
      CollisionNode Gun #1 colnode (1 solids) [bot: 763e4cd8-150a-445f-87c5-3cfdf77c9659]
    ModelRoot Steel Armor #0 model T:(pos -1.5 0 1 scale 1 2 2)
      GeomNode Cube (1 geoms: S:(ColorAttrib))
      CollisionNode Steel Armor #0 colnode (1 solids) [bot: 763e4cd8-150a-445f-87c5-3cfdf77c9659]
    ModelRoot Gun #0 model T:(pos -1.5 0 3)
      GeomNode Cube (1 geoms: S:(ColorAttrib))
      CollisionNode Gun #0 colnode (1 solids) [bot: 763e4cd8-150a-445f-87c5-3cfdf77c9659]
    ModelRoot Lithium Ion Battery model T:(pos 0.5 0 1 scale 0.3)
      GeomNode Cube (1 geoms: S:(ColorAttrib))
      CollisionNode Lithium Ion Battery colnode (1 solids) [bot: 763e4cd8-150a-445f-87c5-3cfdf77c9659]
    ModelRoot Steel Armor #1 model T:(pos 0 0 4 scale 2 2 1)
      GeomNode Cube (1 geoms: S:(ColorAttrib))
      CollisionNode Steel Armor #1 colnode (1 solids) [bot: 763e4cd8-150a-445f-87c5-3cfdf77c9659]
    ModelRoot Wheels model T:(scale 2 2 0.5)
      GeomNode Cube (1 geoms: S:(ColorAttrib))
      CollisionNode Wheels colnode (1 solids) [bot: 763e4cd8-150a-445f-87c5-3cfdf77c9659]
    ModelRoot 360 fisheye camera model T:(pos 0 0 2 scale 0.3)
      GeomNode Cube (1 geoms: S:(ColorAttrib))
      CollisionNode 360 fisheye camera colnode (1 solids) [bot: 763e4cd8-150a-445f-87c5-3cfdf77c9659]
    ModelRoot Steel Armor #2 model T:(pos 1.5 0 1 scale 1 2 2)
      GeomNode Cube (1 geoms: S:(ColorAttrib))
      CollisionNode Steel Armor #2 colnode (1 solids) [bot: 763e4cd8-150a-445f-87c5-3cfdf77c9659]
    ModelRoot Raspberry Pi B+ model T:(pos -0.5 0 1 scale 0.3)
      GeomNode Cube (1 geoms: S:(ColorAttrib))
      CollisionNode Raspberry Pi B+ colnode (1 solids) [bot: 763e4cd8-150a-445f-87c5-3cfdf77c9659]

Basically, my structure is render-> Actor Nodepath -> Bunch of Model Nodepaths -> Collision nodes and Geom Nodes on each model nodepath.

This way the actor controls the physics, responds to gravity and everything. But the parts all exhbit friction and respond as expected!