实验 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 有变化
- 点赞
- 收藏
- 关注作者
评论(0)