当前位置: 首页 > news >正文

实验 gazebo_ros_control

实验 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 有变化

相关文章:

  • freeswitch三、开启视频通话功能
  • python中的列表对象
  • POC(客户验证性测试)项目中关于性能测试的一些心得
  • react扩展(一些单独技术点)
  • 多媒体相关的计算和种类
  • Vue项目实战——实现一个任务清单【基于 Vue3.x 全家桶(简易版)】
  • 分布式架构简述
  • 跨平台应用开发进阶(三十四) :uni-app 实现微信分享
  • 丙烯酸酯-聚乙二醇-羧基,AC-PEG-COOH,Acrylate-PEG-Acid一种带PEG间隔基的交联剂
  • Vue基本原理
  • 【MySql】mysql之主从复制和读写分离搭建
  • Python读取csv文件(super详细简单版)
  • 前端开发node.js、vue安装环境【安装node版本管理工具-nvm,耗时一天时间踩坑总结】
  • Cesium插值计算:运动的Label标签
  • HTML网页的按钮详解
  • [译] React v16.8: 含有Hooks的版本
  • 【Under-the-hood-ReactJS-Part0】React源码解读
  • 【附node操作实例】redis简明入门系列—字符串类型
  • Angularjs之国际化
  • centos安装java运行环境jdk+tomcat
  • Golang-长连接-状态推送
  • gulp 教程
  • JavaScript 是如何工作的:WebRTC 和对等网络的机制!
  • Java读取Properties文件的六种方法
  • Java面向对象及其三大特征
  • laravel 用artisan创建自己的模板
  • React as a UI Runtime(五、列表)
  • Redash本地开发环境搭建
  • Sass Day-01
  • vue总结
  • 第2章 网络文档
  • 精彩代码 vue.js
  • 浏览器缓存机制分析
  • 前端js -- this指向总结。
  • 前端之Sass/Scss实战笔记
  • 使用SAX解析XML
  • 回归生活:清理微信公众号
  • ### Error querying database. Cause: com.mysql.jdbc.exceptions.jdbc4.CommunicationsException
  • (arch)linux 转换文件编码格式
  • (Java数据结构)ArrayList
  • (二)换源+apt-get基础配置+搜狗拼音
  • (七)c52学习之旅-中断
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (推荐)叮当——中文语音对话机器人
  • (新)网络工程师考点串讲与真题详解
  • (学习日记)2024.02.29:UCOSIII第二节
  • (原創) 如何動態建立二維陣列(多維陣列)? (.NET) (C#)
  • (转)LINQ之路
  • (转)socket Aio demo
  • (转载)(官方)UE4--图像编程----着色器开发
  • * CIL library *(* CIL module *) : error LNK2005: _DllMain@12 already defined in mfcs120u.lib(dllmodu
  • .NET 除了用 Task 之外,如何自己写一个可以 await 的对象?
  • .NET 实现 NTFS 文件系统的硬链接 mklink /J(Junction)
  • .netcore如何运行环境安装到Linux服务器
  • .net下简单快捷的数值高低位切换