实验 gazebo_ros_control

274 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 10 月更文挑战」的第3天,点击查看活动详情

实验 gazebo_ros_control

用源码编译生成插件替换默认插件

libgazebo_ros_control.so文件在哪 同样在ros的系统包下 与 libdefault_robot_hw_sim.so文件一样 在这里插入图片描述 把这个文件删了会怎样?

不删正常情况下可以启动 在这里插入图片描述 右键删除该文件不行

在opt文件夹下,没有权限,不能删。

同理 libdefault_robot_hw_sim.so 文件也一样

不删了,进行下一项。

libdefault_robot_hw_sim.so 插件源码生成自己的插件然后加载

将源码 生成了自己的插件 在这里插入图片描述 在这里插入图片描述 仅替换源码是不行的,因为在 调用的时候, 因为命名空间可类名一样 导致加载的分不开

包含头文件时总说找不到 在这里插入图片描述 这块弄好需要 我 是 include 不知道怎么有注释

把robotSimType 便签换成自己的 在这里插入图片描述 gazebo_ros_control依然启动成功了,但是不提示 其中加载了 robotSimType 的哪个
在这里插入图片描述 确定启动了 gazebo_ros_control_jone_text/DefaultRobotHWSimJoneText

在cpp中加入一个打印信息 在 bool DefaultRobotHWSimJoneText::initSim 函数下加入 ROS_INFO(" here here here ");

在这里插入图片描述 成功打印 说明 启动了自己写的插件

测试下插件是不是可用

进行了控制 ,同样 云台进行了转动

打印joint的状态

在DefaultRobotHWSimJoneText::readSim(ros::Time time, ros::Duration period)函数中

把joint 的状态打印出来

   if(j==0)
   {
    ROS_INFO_STREAM_THROTTLE(0.5,"[j]: = "  <<j);
    ROS_INFO_STREAM_THROTTLE(0.5,"joint_names_[0]: = "  <<joint_names_[j]);//打印 要发布的信息
    ROS_INFO_STREAM_THROTTLE(0.5,"joint_position_[0]: = "  <<joint_position_[j]);//打印 要发布的信息
    ROS_INFO_STREAM_THROTTLE(0.5,"joint_velocity_[0]: = "  <<joint_velocity_[j]);//打印 要发布的信息
    ROS_INFO_STREAM_THROTTLE(0.5,"joint_effort_[0]: = "  <<joint_effort_[j]);//打印 要发布的信息
   }


   if(j==1)
   {
    ROS_INFO_STREAM_THROTTLE(0.5,"[j]: = "  <<j);
    ROS_INFO_STREAM_THROTTLE(0.5,"joint_names_[1]: = "  <<joint_names_[j]);//打印 要发布的信息
    ROS_INFO_STREAM_THROTTLE(0.5,"joint_position_[1]: = "  <<joint_position_[j]);//打印 要发布的信息
    ROS_INFO_STREAM_THROTTLE(0.5,"joint_velocity_[1]: = "  <<joint_velocity_[j]);//打印 要发布的信息
    ROS_INFO_STREAM_THROTTLE(0.5,"joint_effort_[1]: = "  <<joint_effort_[j]);//打印 要发布的信息
   }

用节点发布joint控制命令 然后调用节点发布joint控制命令

相应的joint 的position velocity effort 有变化