启智CV机器人,ROS, ubuntu 18.04

资料:
https://wiki.ros.org/kinetic/Installation/Ubuntu
https://blog.csdn.net/qq_44339029/article/details/120579608
http://wiki.ros.org/melodic/Installation/Ubuntu
https://github.com/6-robot/wpb_cv

一、安装ros环境

装VM。

装ubuntu18.04 desktop.iso系统。
Ubuntu 18.04 LTS (Bionic Beaver)

在这里插入图片描述

装vm工具:


sudo apt update
sudo dpkg --configure -a
sudo apt-get autoremove open-vm-tools
sudo apt-get install open-vm-tools -y 
sudo apt-get install open-vm-tools-desktop -y

重启虚拟机。

断网修复:

sudo rmmod e1000
sudo rmmod e1000e
sudo rmmod igbsudo modprobe e1000
sudo modprobe e1000e
sudo modprobe igbsudo dhclient ens33sudo apt-get update && sudo apt-get upgrade
sudo apt-get purge network-manager
sudo apt-get install network-manager

进root,后续一切操作都在root权限操作:

sudo -i
apt install vim -y

增加ros软件源:


sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu bionic main" > /etc/apt/sources.list.d/ros-latest.list'

更换秘钥:

sudo apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

在这里插入图片描述
更新软件源:

sudo apt update

安装ros:


sudo apt install ros-melodic-desktop-full -y

完成后是这样:

在这里插入图片描述

环境生效方式:

echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc
source ~/.bashrc

安装依赖:

sudo apt install python-rosdep python-rosinstall python-rosinstall-generator python-wstool build-essential -y

在这里插入图片描述

初始化rosdep:

sudo apt install python-rosdep -y

在这里插入图片描述

vim /etc/hosts

通过IPAddress.com首页,输入raw.githubusercontent.com查询到最新的真实IP地址

185.199.108.133 raw.githubusercontent.com
rosdep init

在这里插入图片描述

二、配置工作空间

mkdir -p ~/catkin_ws/src
cd ~/catkin_ws/
catkin_make

在这里插入图片描述

三、安装依赖项

sudo apt-get install ros-melodic-joy -y
sudo apt-get install ros-melodic-hector-mapping -y
sudo apt-get install ros-melodic-gmapping -y
sudo apt-get install ros-melodic-navigation -y
sudo apt-get install ros-melodic-sound-play -ysudo apt-get install ros-melodic-depthimage-to-laserscan -y
sudo apt-get install ros-melodic-libuvc -ysudo apt-get install ros-melodic-astra-camera -y # 装不上 用源码装
sudo apt-get install ros-melodic-astra-launch -y # 装不上 只有略过

装不上ros-melodic-astra-camera,从源码安装:


sudo apt install ros-melodic-image-transport ros-melodic-image-publisher libgoogle-glog-dev libusb-1.0-0-dev libeigen3-dev# Assuming you have sourced the ros environment, same below
sudo apt install libgflags-dev  ros-$ROS_DISTRO-image-geometry ros-$ROS_DISTRO-camera-info-manager\
ros-$ROS_DISTRO-image-transport ros-$ROS_DISTRO-image-publisher libgoogle-glog-dev libusb-1.0-0-dev libeigen3-devcd ~/catkin_ws/src
git clone https://github.com/libuvc/libuvc.git
cd libuvc
mkdir build && cd build
cmake .. && make -j4
sudo make install
sudo ldconfigcd ~/catkin_ws/src
git clone https://github.com/orbbec/ros_astra_camera.git
cd ..
catkin_make

装不上ros-melodic-astra-launch,略过。

cd ~/catkin_ws/src/
git clone https://github.com/6-robot/wpb_cv.git
git clone https://github.com/orbbec/ros_astra_camera.git
git clone https://github.com/orbbec/ros_astra_launch.git # 拿不到权限 略过
git clone https://github.com/ros-drivers/rgbd_launch.git
cd /root/catkin_ws
catkin_make

在这里插入图片描述

搞一下这个操作确认一下:


rosdep updatesource /opt/ros/melodic/setup.bash#7 安装rosinstall这个工具和其他构建ROS包的依赖项,轻松地从一个命令下载许多 ROS 包的源树
sudo apt-get install python-rosinstall python-rosinstall-generator python-wstool build-essential -y

测试一下roscore:

在这里插入图片描述

做实验:

cd ~
source /opt/ros/melodic/setup.bashcd /root/catkin_ws/src # 很重要!
catkin_create_pkg ad_sensor_package roscpp std_msgs

写那个cpp文件:

vim /root/catkin_ws/src/ad_sensor_package/src/path_following_node.cpp

写入这个内容:

#include <ros/ros.h>
#include <std_msgs/Int32MultiArray.h>
#include <geometry_msgs/Twist.h>geometry_msgs::Twist vel_cmd; //速度消息包
static int arADVal[15];void AD_Callback(const std_msgs::Int32MultiArray msg) {if (msg.data.size() < 15)return;//获取 AD 值for (int i = 0; i < 15; i++) {arADVal[i] = msg.data[i];}
}int main(int argc, char **argv) {ros::init(argc, argv, "wpb_cv_path_following");ros::NodeHandle n;ros::Subscriber sub_ad = n.subscribe("/wpb_cv/ad", 100, AD_Callback);ros::Publisher vel_pub = n.advertise<geometry_msgs::Twist>("/cmd_vel", 10);vel_cmd.linear.x = 0;vel_cmd.linear.y = 0;vel_cmd.linear.z = 0;vel_cmd.angular.x = 0;vel_cmd.angular.y = 0;vel_cmd.angular.z = 0;vel_pub.publish(vel_cmd);ros::Rate loop_rate(30);int nCountToStop = 0; //计时然后停止while (ros::ok()) {//显示 AD 值printf("[AD]");for (int i = 5; i < 7; i++) {printf(" ad%d=%d ", i + 1, arADVal[i]);}printf("\n");//默认速度值(如果灰度传感器没有检测到黑线,默认机器人正沿着线走,则直行即可)vel_cmd.linear.x = 0.05;vel_cmd.angular.z = 0; //检测左前灰度传感器是否检测到黑线if (arADVal[5] < 2370) {vel_cmd.linear.x = 0.05;vel_cmd.angular.z = 0.2;}//检测右前灰度传感器是否检测到黑线if (arADVal[6] < 2480) {vel_cmd.linear.x = 0.05;vel_cmd.angular.z = -0.2;}//运行 10 秒后自动停止(速度全赋值 0)nCountToStop++;if (nCountToStop > 600) {vel_cmd.linear.x = 0;vel_cmd.angular.z = 0;ROS_WARN("Stop");}//向底盘发送速度值vel_pub.publish(vel_cmd);//延时ros::spinOnce();loop_rate.sleep();}return 0;
}

一定要注意我的执行顺序,最后一句catkin_make构建工作空间后是这样:

cd /root/catkin_ws
catkin_make

在这里插入图片描述

修改settings.yam:

cd /root/catkin_ws/src/wpb_cv/wpb_cv_bringup/config

在这里插入图片描述

再次构建:

source /opt/ros/melodic/setup.bash
cd /root/catkin_ws
catkin_make

在这里插入图片描述

启动节点:

cd /root/catkin_ws
roslaunch wpb_cv_bringup minimal.launch

报错了:

root@ubuntu:~/catkin_ws# roslaunch wpb_cv_bringup minimal.launch
RLException: [minimal.launch] is neither a launch file in package [wpb_cv_bringup] nor is [wpb_cv_bringup] a launch file name
The traceback for the exception was written to the log file

有这个文件的,报错原因要么就是略过了2个包,要么就是要连接硬件?

root@ubuntu:~/catkin_ws# find ~ -name “minimal.launch”
/root/catkin_ws/src/wpb_cv/wpb_cv_bringup/launch/minimal.launch

cmakelist:

add_executable(path_following_node
src/path_following_node.cpp
)
add_dependencies(path_following_node
${${PROJECT_NAME}_EXPORTED_TARGETS}
${catkin_EXPORTED_TARGETS})
target_link_libraries(path_following_node
${catkin_LIBRARIES}
)

或者用这个试试:

add_executable(path_following_node
src/path_following_node.cpp
)
add_dependencies(path_following_node
${${PROJECT_NAME}_EXPORTED_TARGETS}
${catkin_EXPORTED_TARGETS})
target_link_libraries(path_following_node${catkin_LIBRARIES}${console_bridge_LIBRARIES} # 添加这一行来链接console_bridge库
)

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

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

相关文章

100道面试必会算法-27-美团2024面试第一题-前缀和矩阵

100道面试必会算法-27-美团2024面试第一题-前缀和矩阵 问题解读 给定一个 n x n 的二进制矩阵&#xff0c;每个元素是 0 或 1。我们的任务是计算矩阵中所有边长为 k 的子矩阵中&#xff0c;包含特定数量 1 的情况。例如&#xff0c;我们希望找到所有边长为 k 的子矩阵中包含 k…

【学习Day3】计算机基础

✍&#x1f3fb;记录学习过程中的输出&#xff0c;坚持每天学习一点点~ ❤️希望能给大家提供帮助~欢迎点赞&#x1f44d;&#x1f3fb;收藏⭐评论✍&#x1f3fb;指点&#x1f64f; 1.5.4 Cache替换算法 Cache的页面淘汰算法 常用替换算法有&#xff1a; • 随机替换算法RA…

vue3 setup 使用 beforeRouteEnter 组件内路由守卫

vue3 setup 使用 beforeRouteEnter 组件内路由守卫 setup 中只有onBeforeRouteLeave、onBeforeRouteUpdate两个钩子函数&#xff0c; 没有beforeRouteEnter对应的钩子函数&#xff0c;所以无法在setup中直接使用 <script setup> onBeforeRouteLeave((to, from) > {// …

3D软件开发的相关技术

3D开发涉及到广泛的技术和工具&#xff0c;涵盖了多个领域&#xff0c;包括计算机图形学、编程、设计、物理模拟等。以下是3D开发中常用的技术和工具&#xff0c;掌握这些技术需要广泛的知识和实践&#xff0c;项目的成功依赖于对这些技术的有效整合和应用。北京木奇移动技术有…

音视频开发14 FFmpeg 视频 相关格式分析 -- H264 NALU格式分析

H264简介-也叫做 AVC H.264&#xff0c;在MPEG的标准⾥是MPEG-4的⼀个组成部分–MPEG-4 Part 10&#xff0c;⼜叫Advanced Video Codec&#xff0c;因此常常称为MPEG-4 AVC或直接叫AVC。 原始数据YUV,RGB为什么要压缩-知道就行 在⾳视频传输过程中&#xff0c;视频⽂件的传输…

热敏电阻的设计

热敏电阻(NTC)的作用&#xff1a;抑制开机时的浪涌电流。防止开机瞬间产生的浪涌电流损坏后面的元件。 取值依据:根据对开机的脉冲电流&#xff08;浪涌电流&#xff09;小于多少A&#xff1f; 由,这个U是指最大输入电压&#xff0c;I为要求的浪涌电流。 NTC是负温度系数的热…

收银系统源码--商超水果生鲜店收银硬件要怎么选择?

新零售时代&#xff0c;越来越多的商家开始明白&#xff0c;除了要做好店铺定位、店面装潢和商品的设定&#xff0c;还要选购最适合店铺运营需求的收银机和硬件&#xff0c;好的收银机和收银系统可以帮助商家做好收支统计、库存管理、人员配置。客户服务等工作。现在的智能收银…

MySQL 索引使用(二)

本篇继续介绍有关索引的使用。 目录 一、SQL提示 二、单列索引和联合索引 三、覆盖索引 四、前缀索引 五、索引的使用原则 一、SQL提示 我们在使用索引来进行查询时&#xff0c;很有可能会出现一个字段中包含多个索引的情况&#xff0c;例如这里有一个name字段&#xff0c…

从零开始学习Slam-旋转矩阵旋转向量四元组(二)

本文参考&#xff1a;计算机视觉life 仅作笔记用 书接上回&#xff0c;上回不清不楚的介绍了旋转矩阵&旋转向量和四元组 现在回顾一下重点&#xff1a; 本着绕谁谁不变的变则 假设绕z轴旋转θ&#xff0c;旋转矩阵为&#xff1a; 再回顾一下旋转向量的表示以及这个基本记不…

SpringCloud如何实现SSO单点登录?

目录 一、SpringCloud框架介绍 二、什么是SSO单点登录 三、单点登录的必要性 四、SpringCloud如何实现SSO单点登录 一、SpringCloud框架介绍 Spring Cloud是一个基于Spring Boot的微服务架构开发工具集&#xff0c;它整合了多种微服务解决方案&#xff0c;如服务发现、配置…

SpringSecurity6从入门到实战之Filter过滤器回顾

SpringSecurity6从入门到实战之Filter过滤器回顾 如果没有SpringSecurity这个框架,我们应该通过什么去实现客户端向服务端发送请求时,先检查用户是否登录,登录了才能访问.否则重定向到登录页面 流程图如下 官方文档&#xff1a;https://docs.spring.io/spring-security/referen…

Ubuntu (18.04) _Mysql (8.0.X)设置密码强度

首先 查看是否有密码强度插件&#xff1a; SHOW PLUGINS; 如果没有&#xff0c;则安装 install plugin validate_password soname validate_password.so; 再次查看,会看到密码强度插件已开 其次 查看密码强度具体配置 show variables like validate_password%; validate…

echart扩展插件词云echarts-wordcloud

echart扩展插件词云echarts-wordcloud 一、效果图二、主要代码 一、效果图 二、主要代码 // 安装插件 npm i echarts-wordcloud -Simport * as echarts from echarts; import echarts-wordcloud; //下载插件echarts-wordcloud import wordcloudBg from /components/wordcloudB…

uniapp实现图片上传——支持APP、微信小程序

uniapp实现图片、视频上传 文章目录 uniapp实现图片、视频上传效果图组件templatejs 使用 相关文档&#xff1a; 结合 uView 插件 uni.uploadFile 实现 u-upload uploadfile 效果图 组件 简单封装&#xff0c;还有很多属性…&#xff0c;自定义样式等…根据个人所需调整 te…

16:00面试,16:08就出来了,问的问题有点变态。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到8月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…

【C语言】常见的动态内存的错误

前言 在动态内存函数的使用过程中我们可能会遇到一些错误&#xff0c;这里将常见的错误进行总结。 对NULL解引用 请看以下代码&#xff1a; 可以看到&#xff0c;这时我们的malloc开辟是失败的&#xff0c;所以返回的是空指针NULL&#xff0c;而我们却没有进行检查&#xff0…

推荐:4本易发表的优质SSCI期刊,含期刊官网!

01、Risk Management and Healthcare Policy 开源四区&#xff0c;国人发表占比25%&#xff0c;发表量前三的国家分别是中国、埃塞俄比亚和美国。 该期刊对国人友好&#xff0c;年度发文量400多&#xff0c;影响因子3.6。 主要刊发公共卫生相关的文章。 研究者可以围绕居民…

推荐系统三十六式学习笔记:01|你真的需要个性化推荐系统吗?

目录 什么是推荐系统你需要推荐系统吗总结 什么是推荐系统 让我们来换一个角度回答三个问题&#xff0c;从而重新定义什么是推荐系统: 1、它能做什么&#xff1f; 2、它需要什么&#xff1f; 3、它怎么做。 对于第一个问题“它能做什么”&#xff0c;我的回答是&#xff1a;推…

2020年CSP-J入门级第一轮初赛真题

一、选择题 在内存储器中每个存储单元都被赋予一个唯一的序号&#xff0c;称为&#xff08;&#xff09;。 A.地址 B. 序号 C. 下标 D. 编号 答案&#xff1a;A. 地址 在内存储器中&#xff0c;每个存储单元都有一个唯一的标识&#xff0c;用于区分和访问不同的存储单元。这个唯…

说说你对单例模式的理解?如何实现?

一、是什么 单例模式&#xff08;Singleton Pattern&#xff09;&#xff1a;创建型模式&#xff0c;提供了一种创建对象的最佳方式&#xff0c;这种模式涉及到一个单一的类&#xff0c;该类负责创建自己的对象&#xff0c;同时确保只有单个对象被创建 在应用程序运行期间&am…