Viobot硬件控制

news2024/11/28 4:43:19

一.使用上位机控制

 

TOF版本设备点击TOF ON即可开启TOF,开启后按键会变成TOF OFF,点击TOF OFF即可关闭TOF

补光灯版本设备点击LED ON即可开启LED ,开启后按键会变成LED OFF,点击LED OFF即可关闭LED

 设置页面的viobot栏,补光灯前面的勾打上,就默认设备上电会开启补光灯,TOF前面的勾打上,就默认设备上电会开启TOF。

二.ROS控制

我们已经把硬件的控制和反馈信息写成了一个自定义的ros msg,具体的msg信息可以查看demo里面的msg包的viobot_ctrl.msg

Header header
int32 image_select #0/1/2/3 (注:0:无图像通过流数据输出;1:左目;2:右目;3:双目图像通过流数据输出)
bool imu_raw #ON/OFF
bool tof_enable #ON/OFF
bool tof_depth #ON/OFF
bool tof_amp #ON/OFF
bool light #ON/OFF

这里面包含了三类操作

1)TOF开关(TOF版本)

tof_enable true为开,false为关

开启TOF

rostopic pub -1 /system_ctrl system_ctrl/viobot_ctrl "{header: {seq: 0, stamp: {secs: 0, nsecs: 0}, frame_id: ''}, image_select: 0, imu_raw: false, tof_enable: true, tof_depth: false, tof_amp: false, light: false}"

关闭TOF

rostopic pub -1 /system_ctrl system_ctrl/viobot_ctrl "{header: {seq: 0, stamp: {secs: 0, nsecs: 0}, frame_id: ''}, image_select: 0, imu_raw: false, tof_enable: false, tof_depth: false, tof_amp: false, light: false}"

2)补光灯开关(补光灯版)

light true为开,false为关

开启补光灯

rostopic pub -1 /system_ctrl system_ctrl/viobot_ctrl "{header: {seq: 0, stamp: {secs: 0, nsecs: 0}, frame_id: ''}, image_select: 0, imu_raw: false, tof_enable: false, tof_depth: false, tof_amp: false, light: true}"

关闭补光灯

rostopic pub -1 /system_ctrl system_ctrl/viobot_ctrl "{header: {seq: 0, stamp: {secs: 0, nsecs: 0}, frame_id: ''}, image_select: 0, imu_raw: false, tof_enable: false, tof_depth: false, tof_amp: false, light: false}"

3)raw_data输出设置

int32 image_select #0/1/2/3 (注:0:无图像通过流数据输出;1:左目;2:右目;3:双目图像通过流数据输出)
bool imu_raw #ON/OFF
bool tof_depth #ON/OFF
bool tof_amp #ON/OFF

raw_data输出设置是设置到http流输出的,默认是关的,如果使用ROS开发也不需要开,一直都是false就行。

ROSdemo里面的例子

ros::Publisher pub_sys_ctrl = nh.advertise<system_ctrl::viobot_ctrl>("/system_ctrl", 2);

system_ctrl::viobot_ctrl viobot_set;
viobot_set.image_select = 0;
viobot_set.imu_raw = false;
viobot_set.tof_enable = false;
viobot_set.tof_amp = false;
viobot_set.tof_depth = false;
viobot_set.light = false;

ros::Rate r(10);
int v;

while(ros::ok()){
  std::cin >> v;
  if(v == 3){
      ROS_INFO("tof_enable");
      viobot_set.tof_enable = true;
      pub_sys_ctrl.publish(viobot_set);
  }
  if(v == 4){
      ROS_INFO("tof_disable");
      viobot_set.tof_enable = false;
      pub_sys_ctrl.publish(viobot_set);
  }
  if(v == 5){
      ROS_INFO("light_enable");
      viobot_set.light = true;
      pub_sys_ctrl.publish(viobot_set);
  }
  if(v == 6){
      ROS_INFO("light_disable");
      viobot_set.light = false;
      pub_sys_ctrl.publish(viobot_set);
  }
  r.sleep();
  ros::spinOnce(); 
}

三.ROS状态反馈

Type: system_ctrl::viobot_ctrl
Topic: /sys_status

 这个话题是一秒发送一次的。

ROSdemo里面的例子

ros::Subscriber sub_sys_status = nh.subscribe("/sys_status", 2, sys_status_callback);//注册订阅回调

回调函数,1s触发一次,打印接收到的消息。

void sys_status_callback(const system_ctrl::viobot_ctrl::ConstPtr &msg){
    ROS_INFO("sys_status:");
    if(msg->image_select == 1) std::cout << "image_select: " << "left" << std::endl;
    else if(msg->image_select == 2) std::cout << "image_select: " << "right" << std::endl;
    else if(msg->image_select == 3) std::cout << "image_select: " << "left and right" << std::endl;
    else std::cout << "image_select: " << "OFF" << std::endl;

    if(msg->imu_raw == false) std::cout << "imu_raw: " << "OFF" << std::endl;
    else std::cout << "imu_raw: " << "ON" << std::endl;

    if(msg->tof_depth == false) std::cout << "tof_depth: " << "OFF" << std::endl;
    else std::cout << "tof_depth: " << "ON" << std::endl;

    if(msg->tof_enable == false) std::cout << "tof_enable: " << "OFF" << std::endl;
    else std::cout << "tof_enable: " << "ON" << std::endl;

    if(msg->tof_amp == false) std::cout << "tof_amp: " << "OFF" << std::endl;
    else std::cout << "tof_amp: " << "ON" << std::endl;

    if(msg->light == false) std::cout << "light: " << "OFF" << std::endl;
    else std::cout << "light: " << "ON" << std::endl;
}

四.http控制

HTTP协议主要用于参数读写及流数据获取,默认端口8000

按照协议发送即可(补光灯版没有TOF,TOF版没有补光灯)

 五.http状态反馈

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/940241.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

13.redis集群、主从复制、哨兵

1.redis主从复制 主从复制是指将一台redis服务器&#xff08;主节点-master&#xff09;的数据复制到其他的redis服务器&#xff08;从节点-slave&#xff09;&#xff0c;默认每台redis服务器都是主节点&#xff0c;每个主节点可以有多个或没有从节点&#xff0c;但一个从节点…

代码随想录算法训练营第五十二天|LeetCode 84.柱状图中最大的矩形

LeetCode 84.柱状图中最大的矩形 代码如下&#xff08;Java&#xff09;&#xff1a;暴力解法 class Solution {public int largestRectangleArea(int[] heights) {int length heights.length;int[] minLeftIndex new int[length];int[] minRightIndex new int[length];min…

Java实现根据关键词搜索1688商品新品数据方法,1688API节课申请指南

要通过1688的API获取商品新品数据&#xff0c;您可以使用1688开放平台提供的接口来实现。以下是一种使用Java编程语言实现的示例&#xff0c;展示如何通过1688开放平台API获取商品新品数据&#xff1a; 首先&#xff0c;确保您已注册成为1688开放平台的开发者&#xff0c;并创…

【猿灰灰赠书活动 - 03期】- 【RHCSA/RHCE 红帽Linux认证学习指南(第7版) EX200 EX300】

说明&#xff1a;博文为大家争取福利&#xff0c;与清华大学出版社合作进行送书活动 图书&#xff1a;《RHCSA/RHCE 红帽Linux认证学习指南(第7版) EX200 & EX300》 一、好书推荐 图书介绍 《RHCSA/RHCE 红帽Linux认证学习指南&#xff08;第7版&#xff09; EX200 & E…

亚马逊云科技CEO分享企业内决策流程、领导力原则与重组下的思考

亚马逊云科技首席执行官Adam Selipsky几乎从一开始就在那里&#xff1a;他于2005年加入&#xff0c;在效力亚马逊11年后于2016年离开&#xff0c;转而经营Tableau&#xff0c;并于2021年成为亚马逊云科技首席执行官。当时亚马逊云科技前首席执行官安迪贾西(Andy Jassy)接替杰夫…

从数据孤岛到企业xPA的演化

“数据孤岛”一直以来是企业在信息化进程中面临的比较头疼的问题&#xff0c;由于数据独立存在于不同部门之中&#xff0c;无法进行相互联动&#xff0c;致使数据库无法兼容&#xff0c;这无形中加大了跨部门合作的沟通成本。在此背景下&#xff0c;一种新兴的规划方法——扩展…

知虾shopee数据分析工具:shopee出单的商机利器

当今数字化时代&#xff0c;数据已经成为商业成功的关键要素之一。而Shopee作为东南亚最大的电商平台之一&#xff0c;其强大的数据分析工具正为商家提供了宝贵的市场洞察和决策支持。本文将深入探讨Shopee数据分析工具如何帮助商家抓住商机并取得成功。 洞察消费者需求&#x…

Android网络请求,全方位优雅解析

网络请求的基本流程 网络请求步骤&#xff08;用户输入一个网址到网页最终展现到用户面前&#xff09;大致流程总结如下&#xff1a; 在客户端浏览器中输入网址URL。发送到DNS(域名服务器)获得域名对应的WEB服务器的IP地址。客户端浏览器与WEB服务器建立TCP(传输控制协议)连接…

【MySQL】引擎类型

与其他DBMS一样&#xff0c;MySQL有一个 具体管理和处理数据的内部引擎 。在使用create table语句时&#xff0c;该引擎具体创建表&#xff0c;而在使用select或进行其他数据库处理时&#xff0c;该引擎在内部处理你的请求。多数时候&#xff0c;引擎都隐藏在DBMS内&#xff0…

苹果为 Vision Pro 头显申请游戏手柄专利

苹果Vision Pro 推出后&#xff0c;美国专利局公布了两项苹果公司申请的游戏手柄专利&#xff0c;其中一项的专利图如下图所示。据 PatentlyApple 报道&#xff0c;虽然申请专利并不能保证苹果公司会推出游戏手柄&#xff0c;但是苹果公司同时也为游戏手柄申请了商标&#xff0…

【Python-torch】torchio torchvision:transforms API 对比与解析

【Python-torch】torchio & torchvision&#xff1a;transforms API 对比与解析 文章目录 【Python-torch】torchio & torchvision&#xff1a;transforms API 对比与解析0. 前言与对比1. 预处理部分2. 数据增强部分3. 代码示例参考 0. 前言与对比 当处理3d图像数据时…

HDLBits-Verilog学习记录 | Verilog Language-Modules(2)

文章目录 25.Adder 1 | Module add26.Adder 2 | Module fadd27.Carry-select adder28.Adder-subtractor 25.Adder 1 | Module add practice&#xff1a; You are given a module add16 that performs a 16-bit addition. Instantiate two of them to create a 32-bit adder. O…

振动国标2009GB/T 19873.2-2009/ISO 13373-2:2005笔记

国标原文 1.时域&#xff0c;要求&#xff0c;采样率大于最高频率10倍&#xff08;最低频率&#xff1f;&#xff09; 2.频域&#xff0c;要求采样率大于最高频率2倍。 3.3.2 积分和微分&#xff0c;二次积分。 3.3.3 均方根。 3.4 滤波 4.1 奈奎斯特图、极坐标图、坎贝尔…

代码随想录算法训练营第四十九天|LeetCode 647,516,动态规划总结篇

目录 LeetCode 647.回文子串 动态规划五步曲&#xff1a; 1.确定dp[i][j]的含义 2.找出递推公式 3.初始化dp数组 4.确定遍历方向 5.打印dp数组 LeetCode 516.最长回文子序列 动态规划五步曲&#xff1a; 1.确定dp[i][j]的含义 2.找出递推公式 3.初始化dp数组 4.确定遍历方向 …

openssh---Windows下git安装配置gitlab

安装openssh 1. 专业版Win10/11默认自带&#xff0c;可以查看是否开启 1. Get-WindowsCapability -Online | Where-Object Name -like OpenSSH* 2. Add-WindowsCapability -Online -Name OpenSSH.Client~~~~0.0.1.0 3. Add-WindowsCapability -Online -Name OpenSSH.Serve…

智慧工地云平台源码:工地管理专家

智慧工地是目前建筑行业的热门话题之一&#xff0c;它代表了未来建筑施工的发展趋势。那么&#xff0c;智慧工地的未来&#xff0c;你看好吗&#xff1f; 从技术角度来看&#xff0c;智慧工地无疑是未来发展的趋势。随着人工智能、大数据、云计算等技术的飞速发展&#xff0c;智…

python+Appium自动化:python多线程多并发启动appium服务

Python启动Appium 服务 使用Dos命令或者bat批处理来手动启动appium服务&#xff0c;启动效率低下。如何将启动Appium服务也实现自动化呢&#xff1f; 这里需要使用subprocess模块&#xff0c;该模块可以创建新的进程&#xff0c;并且连接到进程的输入、输出、错误等管道信息&…

Ubuntu22.04安装使用Docker (参考:完成Dock中的企业微信安装)

Ubuntu22.04安装使用Docker 概述什么是Docker ?Docker 的优点 Docker的安装(1) 安装 Docker 依赖项(2) 启用 Docker 官方存储库(3) 使用 Apt 命令安装 Docker(4) 验证和测试 Docker 安装 Docker Compose1. 使用二进制文件安装 Docker Compose2. 使用 Pip 安装 Docker Compose …

2023年高教社杯 国赛数学建模思路 - 案例:ID3-决策树分类算法

文章目录 0 赛题思路1 算法介绍2 FP树表示法3 构建FP树4 实现代码 建模资料 0 赛题思路 &#xff08;赛题出来以后第一时间在CSDN分享&#xff09; https://blog.csdn.net/dc_sinor?typeblog 1 算法介绍 FP-Tree算法全称是FrequentPattern Tree算法&#xff0c;就是频繁模…

LC34. 在排序数组中查找元素的第一个和最后一个位置(JAVA)

二分查找 在排序数组中查找元素的第一个和最后一个位置二分查找 上期经典算法 在排序数组中查找元素的第一个和最后一个位置 难度 - 中等 在排序数组中查找元素的第一个和最后一个位置 给你一个按照非递减顺序排列的整数数组 nums&#xff0c;和一个目标值 target。请你找出给定…