精华内容
下载资源
问答
  • 机器人学习笔记 这是我在NJUST的4年计算机科学学士学位和CMU的2年机器人学硕士研究的总结。 我这样做是为了回顾我所学到的知识并填补空白。 最重要的是,帮助对机器人技术感兴趣的年轻工程师快速学习机器人技术。 我...
  • 模型数据库:从Gazebo库下载机器人或环境,或通过其引擎构建自己的机器人。 Socket-Based 通信:通过Socket-Based通信与在远程服务器上运行的Gazebo进行交互。 云模拟:在服务器上运行Gazebo,并通过浏览器与其进行...

    这个纳米学位主要是关于 ROS/Gazebo 的学习, 课程内容很不错,最近Udacity有一个月挑战, 可以免费上课, 时间范围内拿到证书就好啦.
    我的项目指路: https://github.com/yuwei-wu/udacity-robotics-engineer
    这门课主要是用c++写的,其实C++ 的package 都可以转成Python,不过这里就不详细介绍写法了, ROS的官方文档里有详细的文档可以看.

    Part One: Gazebo World

    1.1 Gazebo 介绍

    part 1 主要介绍了Gazebo的一些使用, Gazebo的主要的八个功能:

    • 动力学仿真:使用高性能物理引擎为机器人动力学建模。
    • 高级3D图形:使用高保真图形(包括照明,阴影和纹理)渲染环境。
    • 传感器:将传感器添加到机器人中,生成数据并模拟噪声。
    • 插件(plugin):编写插件以与您的世界,机器人或传感器互动。
    • 模型数据库:从Gazebo库下载机器人或环境,或通过其引擎构建自己的机器人。
    • Socket-Based 通信:通过Socket-Based通信与在远程服务器上运行的Gazebo进行交互。
    • 云模拟:在服务器上运行Gazebo,并通过浏览器与其进行交互。
    • 命令行工具:通过命令行工具控制您的模拟环境。

    这门课主要介绍了四个主要功能,包括动力学仿真,高级3D图形,插件和模型数据库。

    Gazebo安装:

    $ curl -sSL http://get.gazebosim.org | sh
    

    可以直接在终端启动:

    $ gazebo
    

    注意: 这门课是在Ubuntu16 ROSkinetics 环境下的, 如果用18 可能会出现报错, 最好还是在他的虚拟环境下跑.

    Gazebo主要有6个组成部分:

    • Gazebo Server
    • Gazebo Client
    • World Files
    • Model Files
    • Environment Variables
    • Plugins

    我们操作的时候需要修改的是 world文件,model文件, 环境变量和plugins, 主要需要创建的内容如下:

    (1) World Files

    world 文件包括了Gazebo当中的仿真环境, 可以包括机器人模型,光线, 建筑物,传感器之类的. world文件可以编辑和修改,如果没有world文件,Gazebo打开默认环境. world文件是SDF(Simulation Description Format)格式(可以导入一些格式的仿真文件), 也可以自己在Gazebo中创建.

    (2) Model Files

    这个文件就是机器人的模型了,模型文件只能包括模型,这个模型也可以用在其他地方(比如moveIt), 然后再在世界文件中导入.

    (3)Plugins

    plugins 是用来进行文件之间的交互的.可以用plugins来添加传感器等物件的.

    1.2 创建Gazebo仿真

    这部分可以先随便找个文件夹, 因为之后需要把他放进ROS 的workspace

    $ mkdir myrobot
    $ cd myrobot
    $ mkdir world && mkdir model
    

    在myrobot 里面创建两个文件夹, world 和 model . 第一章节的案例是创建了一个两轮的车, 主要是在他的GUI界面创建圆柱体和长方体,然后设定一些参数和links 关系, 也很简单.

    Position: [X, Y, Z] = [0, 0, 0.2]
    Visual and Collision geometry: [X, Y, Z] = [0.3, 1.0, 0.1]
    Z pose = 0.2
    Roll = 1.5707 rad
    Visual and Collision geometry: [Radius, Length] = [0.2, 0.1]

    connections:
    Joint Types: Revolute
    Parent: Chassis
    Child: Wheel
    Joint Axis: Z
    Align Links Joint 1: mid x; minimum y and reverse
    Align Links Joint 2: mid x; maximum y and reverse

    把创建的小车模型保存在model文件夹,再回到world 把world 文件存在world就好了.

    下次再想启动 可以直接输:

    $ gazebo  <world file name> 
    

    就可以了

    1.3 写第一个Plugins: hello world

    $ cd myrobot
    $ mkdir script
    $ cd script
    $ gedit hello.cpp
    

    用vim 也可以,反正找个编辑器把如下的代码copy进去

    #include <gazebo/gazebo.hh>
    
    namespace gazebo
    {
      class WorldPluginMyRobot : public WorldPlugin
      {
        public: WorldPluginMyRobot() : WorldPlugin()
                {
                  printf("Hello World!\n");
                }
    
        public: void Load(physics::WorldPtr _world, sdf::ElementPtr _sdf)
                {
                }
      };
      GZ_REGISTER_WORLD_PLUGIN(WorldPluginMyRobot)
    }
    

    再在myrobot 文件夹下创建CMakeLists.txt文件, copy 如下内容

    cmake_minimum_required(VERSION 2.8 FATAL_ERROR)
    
    find_package(gazebo REQUIRED)
    include_directories(${GAZEBO_INCLUDE_DIRS})
    link_directories(${GAZEBO_LIBRARY_DIRS})
    list(APPEND CMAKE_CXX_FLAGS "${GAZEBO_CXX_FLAGS}")
    
    add_library(hello SHARED script/hello.cpp)
    target_link_libraries(hello ${GAZEBO_LIBRARIES})
    

    接下来就编译就好了

    $ cd myrobot
    $ mkdir build
    $ cd build/
    $ cmake ../
    $ make # You might get errors if your system is not up to date!
    $ export GAZEBO_PLUGIN_PATH=${GAZEBO_PLUGIN_PATH}:/home/workspace/myrobot/build   
    #改成自己的路径
    

    再打开world文件:

    把这行:

    <plugin name="hello" filename="libhello.so"/>
    

    粘贴在这行之下:

    <world name="default">
    

    1.4 builder 编辑器

    builder 主要可用来设计建造建筑物, 添加墙纸,等等.

    1.5 project one

    第一个项目是制作自己的gazebo world 和 robot model.

    展开全文
  • 我主要会从上述四个模块进行构建,并会补充一些工程应用开发中遇到的坑和如何解决的。 目录(Content) 感知 主要传感器 基于二维点云的特征识别 基于三维点云的特征识别 基于图像的特征识别、目标检测 定位 主要...

    序(Prefix)

    本人已从事激光无轨导航的移动机器人算法模块开发工作一年有余,对移动机器人感知、定位、路径规划、运动控制都略有涉猎。是时候构建一番自己关于移动机器人的知识体系了。我主要会从上述四个模块进行构建,并会补充一些工程应用开发中遇到的坑和如何解决的。

    目录(Content)

    感知

    主要传感器

    RGB摄像头

    深度摄像头

    二维激光雷达

    三维激光雷达

    毫米波雷达

    基于二维点云的特征识别

    基于三维点云的特征识别

    基于图像的特征识别、目标检测

    定位

    主要定位算法

    自主定位

    人工信标定位

    SLAM

    路径规划

    全局路径规划

    启发式搜索

    采样式搜索

    图优化搜索

    局部速度规划

    采样法

    数值计算法

    运动控制

    开源框架

    ROS

    MRPT

    仿真

    多机器人调度系统

    工程开发

    展开全文
  • 文章目录ROS_PCL学习(2)前言一、创建新的工程二、程序运行1.启动ros2.读入数据3.启动rviz总结 前言 本文主要关于读取点云数据文件。 一、创建新的工程 在上一节的/chapter10_tutorials/src下继续创建新的cpp文件...

    ROS_PCL学习(2)


    前言

    本文主要关于读取点云数据文件。

    一、创建新的工程

    在上一节的/chapter10_tutorials/src下继续创建新的cpp文件,
    pcl_read.cpp文件内容如下:

    #include <ros/ros.h>
    #include <pcl/point_cloud.h>
    #include <pcl_conversions/pcl_conversions.h>
    #include <sensor_msgs/PointCloud2.h>
     #include<pcl/io/pcd_io.h>
    int main (int argc, char **argv)
    {
        ros::init (argc, argv, "pcl_read");
     
        ros::NodeHandle nh;
        ros::Publisher pcl_pub = nh.advertise<sensor_msgs::PointCloud2> ("pcl_output", 1);
        pcl::PointCloud<pcl::PointXYZ> cloud;
        sensor_msgs::PointCloud2 output;
        pcl::io::loadPCDFile  ("1.pcd",cloud);//改成自己的pcd文件名
        pcl::toROSMsg(cloud,output);
        output.header.frame_id = "odom";
     
        //Convert the cloud to ROS message
        pcl::toROSMsg(cloud, output);
        output.header.frame_id = "odom";
     
        ros::Rate loop_rate(1);
        while (ros::ok())
        {
            pcl_pub.publish(output);
            ros::spinOnce();
            loop_rate.sleep();
        }
     
        return 0;
    }
    

    二、程序运行

    1.启动ros

    roscore
    

    2.读入数据

    此步要在pcd的文件目录下完成

    rosrun chapter10_tutorials pcl_read
    

    3.启动rviz

    配置和上一节基本差不多,调好后就能看到效果了。

    在这里插入图片描述

    总结

    下一节尝试创建一个PCD文件。

    展开全文
  • 文章目录ROS_PCL学习(3)前言一、创建新的工程二、程序运行1.启动ros2.运行节点总结 前言 本文主要接受产生新的bag文件。 一、创建新的工程 还是在之前的工作文件下建立pcl_write.cpp文件。 下面是程序: #...

    ROS_PCL学习(3)


    前言

    本文主要接受产生新的bag文件。

    一、创建新的工程

    还是在之前的工作文件下建立pcl_write.cpp文件。
    下面是程序:

    #include <ros/ros.h>
    #include <pcl/point_cloud.h>
    #include <pcl_conversions/pcl_conversions.h>
    #include <sensor_msgs/PointCloud2.h>
     #include<pcl/io/pcd_io.h>
     void cloudCB(const sensor_msgs::PointCloud2 &input)
     {
         pcl::PointCloud<pcl::PointXYZ> cloud;
         pcl::fromROSMsg(input,cloud);
         pcl::io::savePCDFileASCII("writepcdstudy.pcd",cloud);
     }
    int main (int argc, char **argv)
    {
        ros::init (argc, argv, "pcl_write");
     
        ros::NodeHandle nh;
        ros::Subscriber bat_pub = nh.subscribe ("pcl_output", 10,cloudCB);
        ros::spin();
        return 0;
    }
    

    二、程序运行

    1.启动ros

    2.运行节点

    注意:要两个终端分别运行,同时终端应在PCD的数据文件夹下。

    rosrun chapter10_tutorials pcl_read
    rosrun chapter10_tutorials pcl_write
    

    运行后就应该能看到新产生的PCD文件。

    总结

    下一节是点云的可视化具体操作。

    展开全文
  • 机器人笔记2

    2014-04-08 08:18:00
    我用的是非常流行的chatterbean机器人,项目非常庞大,结构也较复杂,核心的识别代码用了多态,使得代码跟踪略显困难,下面我们就简要介绍一下各个类的功能: AliceBot是核心的机器人类,也是我们使用的接口类,其中...
  • 机器人的初始姿态的方差为0-仅仅是因为这是机器人的起始位置。回想一下开始位置可能在哪里-我们在相对地图中将其称为位置0。此后的每个动作姿势和测量都不确定。在GraphSLAM中,我们将继续假设运动和测量数据具有...
  • Robotics Software engineer笔记 ROS是一款机器人软件框架。软件框架,通常指为了实现某个业界标准,或完成特定基本任务的软件组建规范。ROS的前身是斯坦福人工智能实验室为了支持斯坦福智能机器人STAIR而建立的...
  • 1. SLAM Algorithms 介绍 Extended Kalman Filter SLAM(EKF) 扩展卡尔曼滤波SLAM Sparse Extended information Filter(SEIF) 稀疏扩展信息滤波 Extended Information Form(EIF) 扩展信息...估计:机器人的轨迹 ...
  • 之前的文章介绍过卡尔曼滤波算法进行定位,我们知道kalman算法适合用于线性的高斯分布的状态环境中,我们也介绍了EKF,来解决在非高斯和非线性环境下的机器人定位算法。但是他们在现实应用中存在计算量,内存消耗上...
  • amp;isappinstalled=1    机器人学的核心问题是做好和物理...现在主流的机器人学分支里,处理与物理世界的交互的学科分为三类:传感器和处理算法;多刚体系统动力学控制;机器人自主移动。  智能机器人会成为...
  • 编写ROS节点 1.ROS节点概述 simple_mover 只发布关节角度命令 simple_arm 。 在了解用Python编写的ROS节点的一般结构之后,现在要编写另一个名为 arm_mover 的节点。 arm_mover 提供一种叫做 safe_move 的服务,它...
  • ROS2机器人笔记20-07-24

    2020-07-24 11:44:48
    丰富的工程项目调试经验 自动化配置流程 如何通过LTE直接连接远程机器人测试并操作? 远程部署机器人 可广泛用于各种场景,如培训教育,通过在线远程部署机器人,达成更好的实践效果; 工业和军事领域就不再赘述...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 491
精华内容 196
关键字:

机器人工程笔记