轮趣科技教育版ros小车键盘控制运动

   我之前买的ros小车是单独买的底板,以为随便一个树莓派就可以,因为我以前有一个树莓派3B,后来买了单独的小车之后,发现只能使用树莓派4B,然后又单独买了一个树莓派4B,给装上镜像,安装ros-melodic-desktop-full。经过各种摸索,终于能让小车开动了。

    最开始的时候,是直接把官方提供的launch文件拷贝到catkin_ws相关目录,然后运行,发现运行roslaunch turn_on_wheeltec_robot turn_on_wheeltec_robot.launch的时候总是报错,cannot launch node of type [turn_on_wheeltec_robot/wheeltec_robot_node]。当时一直很纳闷,以为是串口问题,就一直在那运行wheeltec_udev.sh,发现最后wheeltec_controller只能对应/dev/ttyACM0,wheeltec_lidar总是对应/dev/ttyUSB0。但是根据指导资料上好像需要修改0001端口为0002:

    其实呢,这个串口号根本不用修改。

    第二天,就想着把官方给的所有launch包给编译一下,然后又遇到了很多很多问题,大部分问题参照:https://blog.csdn.net/zsq122021821/article/details/128316043,都可以解决,其他问题,根据关键字搜索也能解决,比如缺少pcap.h,找到libpcap的源码,然后放到树莓派上,进入相关目录执行./configure,然后把对应的头文件考到/usr/include目录即可。

    全部编译完成,我们在运行之前,还是需要运行串口修改脚本src\turn_on_wheeltec_robot\scripts\wheeltec_udev.sh,官方给的脚本不用修改任何东西,包括串口号也不需要使用工具CP21xxCustomizationUtility修改。

    运行脚本修改相关串口映射之后,再重新插拔串口线。

    我本机的串口映射:

 

    最后运行:

roslaunch turn_on_wheeltec_robot turn_on_wheeltec_robot.launch

    没有报错,打印如下:

 

    接着运行键盘控制底板的启动文件:

roslaunch wheeltec_robot_rc keyboard_teleop.launch

    打印信息如下所示:

 

    启动不报错,串口开启,就可以通过键盘控制小车移动了,下面是一个键盘控制小车运动的视频: 

ros

     这里通过键盘控制小车移动,只是用到了树莓派,没有开启虚拟机。小车控制板打开,通过电池供电,然后给树莓派供电,树莓派发送指令控制底板运动。

     树莓派使用无线网络,和本机在一个局域网,本机通过putty连接树莓派,最后运行启动相关指令。树莓派使用无线自动连接,设置如下:

    制作镜像之后,在boot目录加入wpa_supplicant.conf

ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev
update_config=1
country=CNnetwork={ssid="JCYJYF"psk="******"key_mgmt=WPA-PSK
}

    其中ssid为wifi名称,psk为wifi密码,根据实际情况设置。 

    后面树莓派启动之后,就会自动连接wifi,偶尔情况树莓派会抽风,并不是每次都能自动连接,断电重启几次就好了。

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

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

相关文章

kotlin 编写一个简单的天气预报app(二)增加搜索城市功能

增加界面显示openweathermap返回的信息。 在activity_main.xml里增加输入框来输入城市&#xff0c;在输入款旁边增加搜索按钮来进行查询。 然后原来显示helloworld的TextView用来显示结果。 1. 增加输入城市名字的EditText <EditTextandroid:id"id/editTextCity"…

用于永磁同步电机驱动器的自适应SDRE非线性无传感器速度控制(MatlabSimulink实现)

目录 &#x1f4a5;1 概述 &#x1f4da;2 运行结果 &#x1f389;3 参考文献 &#x1f308;4 Matlab代码&Simulink仿真实现 &#x1f4a5;1 概述 本文方法基于状态依赖的里卡蒂方程&#xff08;SDRE&#xff09;控制技术及其梯度型神经网络的实时计算方法&#xff0c;允许…

vue拼接html点击事件不生效

vue使用ts&#xff0c;拼接html&#xff0c;点击事件不生效或者报 is not defined 点击事件要用onclick 不是click let data{name:测,id:123} let conHtml <div> "名称&#xff1a;" data.name "<br>" <p class"cursor blue&quo…

第九十八回 如何实现本地存储

文章目录 概念介绍实现方法示例代码 我们在上一章回中介绍了"如何自定义评分条"相关的内容&#xff0c;本章回中将介绍 如何实现本地存储&#xff0c;闲话休提&#xff0c;让我们一起Talk Flutter吧。 概念介绍 Flutter是一套跨平台的UI框架&#xff0c;它不像原生…

理解构建LLM驱动的聊天机器人时的向量数据库检索的局限性 - (第1/3部分)

本博客是一系列文章中的第一篇&#xff0c;解释了为什么使用大型语言模型&#xff08;LLM&#xff09;部署专用领域聊天机器人的主流管道成本太高且效率低下。在第一篇文章中&#xff0c;我们将讨论为什么矢量数据库尽管最近流行起来&#xff0c;但在实际生产管道中部署时从根本…

网络安全 Day23-mariadb数据库数据管理和备份

mariadb数据库数据管理和备份 1. 管理数据库中的库2. 管理库中的表3. 管理表中的字段(列)4. 管理表中的数据(行)5. 数据库数据备份与恢复 1. 管理数据库中的库 进入指定数据库: use 数据库名字库的增删改查 创建数据库: create database 数据库名字指定字符及创建数据库: CREA…

使用Spring Boot AOP实现日志记录

目录 介绍 1.1 什么是AOP 1.2 AOP体系与概念 AOP简单实现 2.1 新建一个SpringBoot项目&#xff0c;无需选择依赖 2.2 设置好本地Maven配置后&#xff0c;在pom.xml文件里添加添加maven依赖 2.3 创建一个业务类接口 2.4 在实体类实现接口业务 2.5 在单元测试运行结果 …

压缩包工具类

压缩包工具类&#xff08;下载&#xff09; import com.enlistboot.common.core.FileResult; import org.springframework.http.HttpHeaders; import org.springframework.util.ObjectUtils;import javax.servlet.http.HttpServletResponse; import java.io.*; import java.net…

IDEA Writing classes... 比较慢

IDEA配置修改如下&#xff1a; 1、File -> Settings… 2、Build&#xff0c;Execution&#xff0c;Deployment -> Compiler Build process heap size 配置为 20483、Build&#xff0c;Execution&#xff0c;Deployment -> Compiler -> ActionScript & Flex C…

vue基础-diff算法

vue基础-diff算法 1、根元素改变2、根元素不变 1、根元素改变 同级比较-根元素的变化-整个dom树删除重建 2、根元素不变 同级比较&#xff0c;根元素不变-属性改变更新属性

SpringBoot自动装配介绍

SpringBoot是对Spring的一种扩展&#xff0c;其中比较重要的扩展功能就是自动装配&#xff1a;通过注解对常用的配置做默认配置&#xff0c;简化xml配置内容。本文会对Spring的自动配置的原理和部分源码进行解析&#xff0c;本文主要参考了Spring的官方文档。 自动装配的组件 …

[每日习题]进制转换 参数解析——牛客习题

hello,大家好&#xff0c;这里是bang___bang_&#xff0c;本篇记录2道牛客习题&#xff0c;进制转换&#xff08;简单&#xff09;&#xff0c;参数解析&#xff08;中等&#xff09;&#xff0c;如有需要&#xff0c;希望能有所帮助&#xff01; 目录 1️⃣进制转换 2️⃣参…

python 自动化数据提取之正则表达式

>>>> 前 言 我们在做接口自动化的时候&#xff0c;处理接口依赖的相关数据时&#xff0c;通常会使用正则表达式来进行提取相关的数据&#xff0c;今天在这边和大家聊聊如何在python中使用正则表达式。 正则表达式&#xff0c;又称正规表示式、正规表示法、正规…

gitee使用参考

Git代码托管服务 2.1 常用的Git代码托管服务 gitHub&#xff08; 地址&#xff1a;https://github.com/ &#xff09;是一个面向开源及私有软件项目的托管平台&#xff0c;因为只支持Git 作为唯一的版本库格式进行托管&#xff0c;故名gitHub码云&#xff08;地址&#xff1a;…

《cuda c编程权威指南》03 - cuda小功能汇总

1. 计时 1.1 linux #include <sys/time.h>double cpuSecond() {struct timeval tp;gettimeofday(&tp, NULL);return ((double)tp.tv_sec (double)tp.tv_usec*1e-6); }// 调用 double start cpuSecond(); kernel_name << <grid, block >> > (ar…

Java反射机制的详细讲解

目录 1.反射机制是什么&#xff1f; 2.反射机制能干什么&#xff1f; 3.反射相关的类 ​编辑 4.Class类(反射机制的起源 ) 5.反射机制相关的API 1.(重要)常用获得类相关的方法 2.常用获得类中属性相关的方法(以下方法返回值为Field相关 3.(了解)获得类中注解相关的方法…

统计神经网络参数量、MAC、FLOPs等信息

0、基础提示 1、FLOPS是用来衡量硬件算力的指标&#xff0c;FLOPs用来衡量模型复杂度。 2、MAC 一般为 FLOPs的2倍 3、并非FLOPs越小在硬件上就一定运行更快&#xff0c;还与模型占用的内存&#xff0c;带宽&#xff0c;等有关 1、FLOPs计算 神经网络参数量。用于衡量模型大…

【Django+Vue】英文成绩管理平台--20230727

能够满足大部分核心需求&#xff08;标绿&#xff09;&#xff1a;报表部分应该比较难。 项目地址 前端编译 https://gitlab.com/m7840/toeic_vue_dist Vue源码 https://gitlab.com/m7840/toeic_vue Django源码 https://gitlab.com/m7840/toeic_python 项目架构 流程 …

C# 循环等知识点

《1》程序&#xff1a;事先写好的指令&#xff08;代码&#xff09; using 准备工具 namespace 模块名称 { class 子模块{ static void main()//具体事项 { 代码 } } } 《2》变量&#xff1a;内存里的一块空间&#xff0c;用来存储数据常用的有小数&#xff0c;整数&#xff0c…

LeetCode使用最小花费爬楼梯(动态规划)

使用最小花费爬楼梯&#xff08;动态规划&#xff09; 题目描述算法流程(方法一)编程代码优化代码算法流程&#xff08;方法二&#xff09;编程代码代码优化 链接: 使用最小花费爬楼梯 题目描述 算法流程(方法一) 编程代码 class Solution { public:int minCostClimbingStair…