启智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 igb

sudo modprobe e1000
sudo modprobe e1000e
sudo modprobe igb

sudo dhclient ens33

sudo 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 -y


sudo apt-get install ros-melodic-depthimage-to-laserscan -y
sudo apt-get install ros-melodic-libuvc -y


sudo 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-dev


cd ~/catkin_ws/src
git clone https://github.com/libuvc/libuvc.git
cd libuvc
mkdir build && cd build
cmake .. && make -j4
sudo make install
sudo ldconfig


cd ~/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 update

source /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.bash

cd /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库
)

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【赠书第27期】向AI提问的艺术:提示工程入门与应用

文章目录 前言 1 问题的构建 1.1 明确性与具体性 1.2 结构化与层次性 1.3 相关性与针对性 2 提问的技巧 2.1 简洁明了 2.2 避免歧义 2.3 使用自然语言 3 与AI的互动策略 3.1 耐心与理解 3.2 逐步引导 3.3 反馈与调整 4 总结与展望 5 推荐图书 6 粉丝福利 前言 …

uni-app实现页面通信EventChannel

uni-app实现页面通信EventChannel 之前使用了EventBus的方法实现不同页面组件之间的一个通信&#xff0c;在uni-app中&#xff0c;我们也可以使用uni-app API —— uni.navigateTo来实现页面间的通信。注&#xff1a;2.8.9 支持页面间事件通信通道。 1. 向被打开页面传送数据…

XX集团信息(IT)战略和规划项目(154页PPT)

方案介绍&#xff1a; 本集团信息&#xff08;IT&#xff09;战略与规划项目方案是集团数字化转型和信息化建设的重要组成部分。通过本方案的实施&#xff0c;我们将为集团的长期发展提供坚实的信息化支撑&#xff0c;提高集团的管理水平和运营效率&#xff0c;增强企业的竞争…

来聊聊Redis中的字符串对象的设计

写在文章开头 redis对于性能的追求做到了极致,在之前的文章中我们redis的简单动态字符串SDS进行了详细的介绍了,而本文我将从顶层的视角来聊聊Redis基于SDS等数据结构实现一个平衡时间与空间的字符串对象。 Hi,我是 sharkChili ,是个不断在硬核技术上作死的 java coder ,…

2024年最具性价比宠物空气净化器推荐!小米、希喂、安德迈真实测评

一款理想的宠物空气净化器应该具备去除浮毛和异味等基本功能&#xff0c;但要找到一款既满足个人需求、性能出色且性价比高的产品&#xff0c;这需要一定的选择技巧。 遗憾的是&#xff0c;许多人在购买时由于对相关术语的不熟悉或缺乏挑选经验&#xff0c;可能会买到不适合自…

Java流与链表:探索java.util.stream与LinkedList的交汇点

在现代Java开发中&#xff0c;流&#xff08;Streams&#xff09;和链表&#xff08;LinkedList&#xff09;都是强大且常用的数据处理工具。java.util.stream提供了高效的方式来处理数据流&#xff0c;而LinkedList则是java.util包中的经典集合实现。本文将探索它们的交汇点&a…

C# PaddleOCR 单字识别效果

C# PaddleOCR 单字识别效果 效果 说明 根据《百度办公文档识别C离线SDKV1.2用户接入文档.pdf》&#xff0c;使用C封装DLL&#xff0c;C#调用。 背景 为使客户、第三方开发者等能够更快速、方便的接入使用百度办公文档识别 SDK、促进百度 OCR产品赋能更多客户&#xff0c;特设…

[初始计算机]——计算机网络的基本概念和发展史及OSI参考模型

&#x1f3e1;作者主页&#xff1a;点击&#xff01; &#x1f916;网络通信基础TCP/IP专栏&#xff1a;点击&#xff01; ⏰️创作时间&#xff1a;2024年5月30日11点59分 &#x1f004;️文章质量&#xff1a;96分 ​ 目录 &#x1f310;计算机网络概述 &#x1f4af;…

定点化和模型量化(二)

1.量化器的种类——均匀/ https://arxiv.org/pdf/1806.08342 1.1 Uniform Affine Quantizer 这是一种最朴素的量化&#xff1a; s表示step&#xff0c;可以看作量化的最小单位&#xff1b;z是zero point&#xff0c;因为当浮点x0时&#xff0c;对应的量化结果就是z。 可以看…

【SQL学习进阶】从入门到高级应用(七)

文章目录 ✨数据处理函数✨if函数✨cast函数✨加密函数 ✨分组函数✨max✨min✨avg✨sum✨count✨分组函数组合使用✨分组函数注意事项 ✨分组查询✨group by✨having✨组内排序 ✨总结单表的DQL语句 &#x1f308;你好呀&#xff01;我是 山顶风景独好 &#x1f495;欢迎来到我…

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

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

跨境电商如何收款?6大常用收款方式对比!

收款是跨境中关键的一环&#xff0c;选择一个安全、高效、成本合理的收款工具很重要。每个跨境人都要先想好选择合适的收款方式&#xff0c;今天就给跨境人们总结了6个主流的跨境收款工具&#xff0c;大家可以根据自己的实际情况进行对比选择。 1、PayPal 适用平台&#xff1a;…

Vue3使用mitt进行组件通信

mitt&#xff1a;事件总线&#xff0c;是第三方插件。 Vue2.x 使用 EventBus 事件总线进行兄弟组件通信&#xff0c;而在Vue3中 EventBus 事件总线模式已经被移除&#xff0c;官方建议使用外部的、实现了事件触发器接口的库&#xff0c;例如 mitt 或 tiny-emitter。 比起 Vue…

华为大咖说 | 企业应用AI大模型的“道、法、术”—— 法:场景篇

本文作者&#xff1a;郑岩&#xff08;华为云AI变革首席专家&#xff09;全文约5000字&#xff0c;阅读约需10分钟 这是我的AI应用系列第二篇&#xff0c;想谈谈“如何找个好场景”。场景找对了&#xff0c;那就成功一大半&#xff0c;这个道理放在AI大模型的应用上&#xff0c…

谷歌为其AI搜索结果辩护,称问题出在“数据空白”和边缘案例|TodayAI

近日&#xff0c;谷歌 Google 在推出其AI生成的搜索结果后&#xff0c;引发了广泛争议。该公司表示&#xff0c;一些不准确的搜索结果是由于“数据空白”和边缘案例导致的。 上周&#xff0c;谷歌向数百万用户推出了AI搜索结果&#xff0c;旨在提供更好的搜索体验。然而&#…

[Redis]Hash类型

基本命令 hset命令 设置 hash 中指定的字段&#xff08;field&#xff09;的值&#xff08;value&#xff09; 返回值&#xff1a;添加的字段的个数&#xff08;注意是添加的个数&#xff0c;而不包括修改的&#xff09; hset key field value [field value ...] hget命令 …

RabbitMQ(三)SpringBoot整合,可靠性投递,死信队列,延迟队列,消费端限流,消息超时

文章目录 整合Springboot概述消费者生产者 消息可靠性投递故障原因解决方案生产者端消息确认机制&#xff08;故障情况1&#xff09;故障情况2解决方案故障情况3解决方案 消费端限流概念 消息超时概念队列层面&#xff1a;配置队列过期消息本身&#xff1a;配置消息过期 死信队…

GUI 01:GUI 编程概述,AWT 相关知识,Frame 窗口,Panel 面板,及监听事件的应用

一、前言 记录时间 [2024-05-30] 疑问导航 GUI 是什么&#xff1f;GUI 如何使用&#xff1f;GUI 有哪些应用&#xff1f; 学习目的 写一些自己心中的小工具&#xff1b;Swing 界面的维护&#xff1b;了解 MVC 架构&#xff0c;以及监听事件。 本文对图形用户界面&#xff08…

Django——Admin站点(Python)

#前言&#xff1a; 该博客为小编Django基础知识操作博客的最后一篇&#xff0c;主要讲解了关于Admin站点的一些基本操作&#xff0c;小编会继续尽力更新一些优质文章&#xff0c;同时欢迎大家点赞和收藏&#xff0c;也欢迎大家关注等待后续文章。 一、简介&#xff1a; Djan…

【Spring Cloud】微服务日志收集系统-ELK+Kafka

目录 任务背景本文相关文件资料Elasticsearch特性 LogstashKibanaELKELK的缺点引入消息中间件 ELKKafkaKafka概念 ELKKafka环境搭建1.将安装素材上传至服务器 cd /usr/local/soft2.防止Elasticsearch因虚拟内存问题启动失败3.创建镜像li/centos7-elasticsearch4.创建容器5.验证…