gazebo并不是ros2内自带的,是一个独立的软件,需要安装ros_gz功能被把ros2消息转换为gazebo可以识别的命令,并且把gazebo状态转换为ros2信息,所以可以认为ros_gz_bridge节点就是gazebo,
这个节点只接收2个话题:很可能/chatter话题就是接收控制信息的。可以看奥消息类型跟/cmd_vel的消息类型是一样的
如果要接收控制信息估计要使用重定向。<remap>
好像不是/chatter,好像是/cmd_vel啊
看动起来了,哈哈
<launch>
<group>
<let name="robot_description" value="$(command 'xacro $(find-pkg-share gazebo_pkg)/urdf/total.xacro')"/>
<node pkg="rviz2" exec="rviz2" name="rviz2" output="screen"/>
<!--rviz2 need this node below-->
<node pkg="robot_state_publisher" exec="robot_state_publisher" name="robot_state_publisher">
<param name="robot_description" value="$(var robot_description)"/>
</node>
<node name="joint_state_publisher" exec="joint_state_publisher" pkg="joint_state_publisher"/>
<include file="$(find-pkg-share ros_gz_sim)/launch/gz_sim.launch.py">
<arg name="gz_args" value="-v 4 default.sdf"/>
</include>
<node pkg="ros_gz_sim" exec="create" args="-world default -file $(find-pkg-share gazebo_pkg)/urdf/total.urdf">
</node>
<node pkg="ros_gz_bridge" exec="parameter_bridge" args="/cmd_vel@geometry_msgs/msg/Twist@ignition.msgs.Twist"/>
</group>
</launch>
注意了:这个地方/cmd_vel可以是自定义的话题例如可以设置为:/cmd_vel520,然后在驱动控制器的地方设置为:
就是说命令行负责自定义发布话题的名称/cmd_vel520
另外一个负责接收控制的节点信息---也设置为/cmd_vel520,<topic>cmd_vel520</topic>
对不起上面说错了,这个launch文件里面的/cmd_vel520是负责转换的话题名称,发布的话题一般在模拟的时候是使用rqt工具箱设置的