Navigation

    蓝鲸ROS机器人论坛

    • Register
    • Login
    • Search
    • Categories
    • Tags
    • Popular
    1. Home
    2. weijiz
    3. Posts
    ROS交流群
    ROS Group
    产品服务
    Product Service
    开源代码库
    Github
    官网
    Official website
    技术交流
    Technological exchanges
    激光雷达
    LIDAR
    ROS教程
    ROS Tourials
    深度学习
    Deep Learning
    机器视觉
    Computer Vision
    • Profile
    • Following 0
    • Followers 11
    • Topics 248
    • Posts 705
    • Best 11
    • Groups 1

    Posts made by weijiz

    • RE: 谷歌cartographer使用速腾聚创3d激光雷达数据进行三维建图

      @rolandyin https://github.com/BluewhaleRobot/cartographer_ros

      posted in 激光雷达
      weijiz
      weijiz
    • 如何获取伽利略证书

      伽利略导航系统在运行时会检查证书。小强用户可以向管理员免费索取。下面介绍一下证书的获取和使用方法

      获取证书

      通过QQ联系管理员(1024313822),在自己的小强上运行ifconfig,并把结果截图发给管理员

      管理员之后会给你发送证书文件

      证书的使用

      把证书文件key.sig文件放入Documents/.galileo文件夹里面。然后运行此文件夹中的verify_tool文件。注意.galileo是一个隐藏文件夹。可以通过按 Ctrl + H显示隐藏文件夹。

      0_1539828763221_02483618-f430-405a-bf3a-4756bd171248-image.png

      在此文件夹按住shift同时点击鼠标右键,在菜单中选择Open in Terminal

      0_1539828840440_7cb97570-98bf-4d72-b5f7-2d05c10cf8f2-image.png

      输入

      ./verify_tool
      

      0_1539828901423_ec1d1147-a21a-4c8d-99a2-25581f8c1ec7-image.png

      如果证书没问题,就会有如上的输出。

      常见的问题

      Q: 证书验证失败
      A: 小强Pro用户需要保证的自己的网络设备有enp2s0设备。在有些特殊情况下,有时候会没有对应的网络设备。可以参照这里的文档添加udev规则修改网络设备名称。

      比如对于小强mini用户可以创建 /etc/udev/rules.d/70-persistent-net.rules 文件。在文件中添加

      SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="00:e0:4c:68:4a:ff", ATTR{dev_id}=="0x0", ATTR{type}=="1", NAME="enp2s0"
      

      其中00:e0:4c:68:4a:ff替换成自己的mac地址。修改完后重启生效。

      Q: 需要什么版本的系统
      A: 目前只支持Ubuntu 16.04。对于14.04以及比较老的系统需要更新系统后使用。更新系统请参考这里

      posted in 产品服务
      weijiz
      weijiz
    • RE: 原装和国产ps3手柄ros驱动程序

      @xiangxiang123 把手柄插入主机后运行lsusb看一下。把输出发过来。

      posted in 产品服务
      weijiz
      weijiz
    • RE: 在Android中使用ROS

      @bitliuyu 你的程序我可以正常运行额

      0_1539598709253_424f26be-ce25-4643-95d6-ed09d0b2b5f8-image.png

      用的是这个配置
      0_1539598792004_e3effb8e-02a4-4b50-9e42-97b5e018da13-image.png

      posted in 技术交流
      weijiz
      weijiz
    • RE: 在Android中使用ROS

      @bitliuyu 在 在Android中使用ROS 中说:

      lass<android.app.AppComponentFactory>

      从错误看不像是gradle的设置问题。你可以把你的代码发github上,我给你看看。

      posted in 技术交流
      weijiz
      weijiz
    • RE: 在Android中使用ROS

      @bitliuyu 在 在Android中使用ROS 中说:

      versionName

      可以运行例子的Android项目吗?
      闪退后Logcat里面的错误是什么?
      是不是没有设置网络权限?

      posted in 技术交流
      weijiz
      weijiz
    • 提Pull Request得衬衫活动

      Github开展了一个提Pull Request得衬衫的活动。简单说就是在10月份内在开源项目提够5个Pull Request就可以送衬衫。
      活动页面

      但是提Pull Request是什么?提交会不会很困难?

      简单说就是给开源项目贡献代码。我们的小强文档实际上也是一个开源项目。各位同学在使用小强,学习教程的时候如果觉得文档有错误或者有需要优化的地方可以直接进行修改。修改提交后就可以算为一个Pull Request了。

      下面是这个活动的具体参与方法。

      1. 注册Github账号
        如果没有Github账号需要先注册一个,Github网址

      2. 参加活动
        打开活动页面进行注册

        0_1539593439496_7c288f5a-a727-41d3-a7e3-f613449381bb-image.png

        点击Register Now

      3. 修改小强文档
        打开小强在线文档

        找到你要修改的页面, 点击左上角的编辑本页

        0_1539593597123_684195c3-0781-4d2c-afec-ee13cf8d4878-image.png

        在打开的页面中进行修改

        0_1539593759342_e26a7cb2-5bd9-42fb-8be3-e5ef5dff1906-image.png

        修改完成后点击下面的确认按钮

      4. 等待合并代码
        在提交修改后,我们会进行检查如果没有问题,我们就会把你的更改添加到代码里面。

      posted in 讨论区
      weijiz
      weijiz
    • 在Android中使用ROS

      由于ROS提供了Android的对应的开发库,我们可以方便的在Android中开发相应的ROS客户端程序。下面介绍一下在Android中使用ROS库的方法。

      1. 开发环境配置

      Android的开发一般使用Android Studio. 其ROS相关的配置方式可以有两种。一种是在ROS环境中使用,另一种是给普通的Android App添加上ROS的依赖库。第二种方式可以在开发机器没有安装ROS的条件下进行开发。由于我使用Windows系统开发Android,所以这里使用第二种方式。

      1.创建Android App项目

      首先在Android Studio中创建一个普通的Android App

      0_1539307156811_6d22da70-2962-4ef5-888b-726e23b5998f-image.png

      设置好项目名称后点击Next

      0_1539307220238_1f5381be-cd02-4833-afee-b459c48e2f85-image.png

      继续点击Next

      0_1539307249051_27ffcaed-e645-4778-af68-15fa883817b3-image.png

      选择Empty Activity后点击Next

      0_1539307281775_256bf658-2614-45f1-92d1-e880741183d1-image.png

      然后点击Finish

      等待项目Sync完成。

      2.修改build.gradle文件

      项目Sync完成之后,在项目左侧的文件列表内会有两个build.gradle文件。其中一个是Project的,另一个是Module的。

      0_1539307502506_ff9ec153-eba0-4e7b-a3a3-d6d4613f010b-image.png

      首先修改Project的build.gradle文件

      把文件中的

      buildscript {
          repositories {
              jcenter()
          }
          dependencies {
              classpath 'com.android.tools.build:gradle:2.2.3'
      
              // NOTE: Do not place your application dependencies here; they belong
              // in the individual module build.gradle files
          }
      }
      

      修改为

      buildscript {
        apply from: "https://github.com/rosjava/android_core/raw/kinetic/buildscript.gradle"
      }
      

      然后在文件中添加

      subprojects {
          apply plugin: 'ros-android'
      
          afterEvaluate { project ->
              android {
                  // Exclude a few files that are duplicated across our dependencies and
                  // prevent packaging Android applications.
                  packagingOptions {
                      exclude "META-INF/LICENSE.txt"
                      exclude "META-INF/NOTICE.txt"
                  }
              }
          }
      }
      

      然后修改Module的build.gradle,在dependencies 中添加ros依赖

      ...
      dependencies {
          ...
          // You now now add any rosjava dependencies, like so:
          compile 'org.ros.android_core:android_10:[0.3,0.4)'
      }
      ...
      

      同时把dependencies 中的 全部implementation修改为compile。注意修改时的大小写。

      把文件中的compileSdkVersion版本设置为25
      targetSdkVersion也设置为25
      把 com.android.support:appcompat-v7:27.1.1也修改成25的版本

      最后修改完成的文件如下面所示

      apply plugin: 'com.android.application'
      
      android {
          compileSdkVersion 25
          defaultConfig {
              applicationId "org.bwbot.rostest"
              minSdkVersion 15
              targetSdkVersion 25
              versionCode 1
              versionName "1.0"
              testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
          }
          buildTypes {
              release {
                  minifyEnabled false
                  proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
              }
          }
      }
      
      dependencies {
          compile fileTree(dir: 'libs', include: ['*.jar'])
          compile 'com.android.support:appcompat-v7:25.4.0'
          compile 'com.android.support.constraint:constraint-layout:1.1.3'
          testCompile 'junit:junit:4.12'
          androidTestCompile 'com.android.support.test:runner:1.0.2'
          androidTestCompile 'com.android.support.test.espresso:espresso-core:3.0.2'
          compile 'org.ros.android_core:android_10:[0.3,0.4)'
      }
      

      3.修改AndroidManifest.xml文件

      此时如果编译项目会出现下面的错误

      Manifest merger failed : Attribute application@icon value=(@mipmap/ic_launcher) from AndroidManifest.xml:7:9-43
      	is also present at [org.ros.android_core:android_10:0.3.3] AndroidManifest.xml:19:9-36 value=(@mipmap/icon).
      	Suggestion: add 'tools:replace="android:icon"' to <application> element at AndroidManifest.xml:5:5-19:19 to override.
      

      此时需要修改AndroidManifest.xml文件在application项目中做如下修改

      <application xmlns:tools="http://schemas.android.com/tools"
              tools:replace="android:icon"
              ...
      

      为了能够正常使用还需要给app添加网络权限。在AndroidManifest.xml文件中添加

      <uses-permission android:name="android.permission.INTERNET"/>
      

      最后的AndroidManifest.xml文件如下

      <?xml version="1.0" encoding="utf-8"?>
      <manifest xmlns:android="http://schemas.android.com/apk/res/android"
          package="org.bwbot.rostest">
          <uses-permission android:name="android.permission.INTERNET"/>
          <application
              xmlns:tools="http://schemas.android.com/tools"
              tools:replace="android:icon"
              android:allowBackup="true"
              android:icon="@mipmap/ic_launcher"
              android:label="@string/app_name"
              android:roundIcon="@mipmap/ic_launcher_round"
              android:supportsRtl="true"
              android:theme="@style/AppTheme">
              <activity android:name=".MainActivity">
                  <intent-filter>
                      <action android:name="android.intent.action.MAIN" />
      
                      <category android:name="android.intent.category.LAUNCHER" />
                  </intent-filter>
              </activity>
          </application>
      </manifest>
      

      此时项目已经可以成功编译了。

      2. 写一个简单的消息发布程序

      MainActivity.java内容如下

      package org.bwbot.rostest;
      
      import android.support.v7.app.AppCompatActivity;
      import android.os.Bundle;
      
      import org.ros.android.RosActivity;
      import org.ros.concurrent.CancellableLoop;
      import org.ros.namespace.GraphName;
      import org.ros.node.ConnectedNode;
      import org.ros.node.Node;
      import org.ros.node.NodeConfiguration;
      import org.ros.node.NodeMain;
      import org.ros.node.NodeMainExecutor;
      import org.ros.node.topic.Publisher;
      
      import java.net.URI;
      
      import std_msgs.String;
      
      public class MainActivity extends RosActivity {
      
          protected MainActivity() {
              super("ros_test", "ros_test", URI.create("http://192.168.0.23:11311")); // 这里是ROS_MASTER_URI
          }
      
          @Override
          protected void onCreate(Bundle savedInstanceState) {
              super.onCreate(savedInstanceState);
              setContentView(R.layout.activity_main);
          }
      
          @Override
          protected void init(NodeMainExecutor nodeMainExecutor) {
              NodeConfiguration nodeConfiguration = NodeConfiguration.newPublic(getRosHostname());
              nodeConfiguration.setMasterUri(getMasterUri());
              nodeMainExecutor.execute(new NodeMain() {
                  @Override
                  public GraphName getDefaultNodeName() {
                      return GraphName.of("ros_test");
                  }
      
                  @Override
                  public void onStart(ConnectedNode connectedNode) {
                      final Publisher<std_msgs.String> pub =  connectedNode.newPublisher("/test", String._TYPE);
                      connectedNode.executeCancellableLoop(new CancellableLoop() {
                          @Override
                          protected void loop() throws InterruptedException {
                              std_msgs.String msg = pub.newMessage();
                              msg.setData("hello world");
                              pub.publish(msg);
                              Thread.sleep(1000);
                          }
                      });
                  }
      
                  @Override
                  public void onShutdown(Node node) {
      
                  }
      
                  @Override
                  public void onShutdownComplete(Node node) {
      
                  }
      
                  @Override
                  public void onError(Node node, Throwable throwable) {
      
                  }
              }, nodeConfiguration);
          }
      }
      
      

      编译后,在手机上运行App。然后再运行的ROS的主机上打印/test话题

      0_1539309423828_6d76f7f8-7323-4eb0-af7f-25ecf8e92acd-image.png

      可以看到消息已经成功发送出来了。

      本项目已经发布到 Github

      3. 注意事项

      1. compileSdkVersion 版本问题
        由于在新版本的Android中,com.android.support:appcompat-v7软件包移除了一些组件。而这些组件ROS的库使用到了。所以在Android SDK > 25的版本中无法使用Android ROS. 所以我们要在配置文件中修改SDK版本。

      2. Android模拟器网络
        Android模拟器默认是有NAT转换,所以使用虚拟机是无法访问到局域网内的ROS Master的。开发时建议使用实际的手机。

      4. 如何使用自定义的消息类型

      使用自己定义的消息需要首先生成消息的jar库文件,然后导入项目依赖。

      下面以小强的galileo_serial_server里面的消息为例。

      首先安装rosjava相关的依赖包

      sudo apt-get install ros-kinetic-genjava
      sudo apt-get install ros-kinetic-rosjava*
      

      然后catkin_make具有相关消息的软件包

      catkin_make -DCATKIN_WHITELIST_PACKAGES="galileo_serial_server"
      

      可以看到其输出如下

      WARNING: Package name "NLlinepatrol_planner" does not follow the naming conventions. It should start with a lower case letter and only contain lower case letters, digits, underscores, and dashes.
      [ 73%] Built target galileo_serial_server_generate_messages_java
      Scanning dependencies of target galileo_serial_server_node
      [ 78%] Building CXX object galileo_serial_server/CMakeFiles/galileo_serial_server_node.dir/src/galileo_serial_server_node.cpp.o
      [ 84%] Building CXX object galileo_serial_server/CMakeFiles/galileo_serial_server_node.dir/src/galileo_serial_server.cpp.o
      [ 89%] Building CXX object galileo_serial_server/CMakeFiles/galileo_serial_server_node.dir/src/AsyncSerial.cpp.o
      [ 94%] Compiling Java code for galileo_serial_server
      [100%] Linking CXX executable /home/xiaoqiang/Documents/ros/devel/lib/galileo_serial_server/galileo_serial_server_node
      [100%] Built target galileo_serial_server_node
      warning: [options] bootstrap class path not set in conjunction with -source 1.7
      1 warning
      Uploading: org/ros/rosjava_messages/galileo_serial_server/1.0.0/galileo_serial_server-1.0.0.jar to repository remote at file:/home/xiaoqiang/Documents/ros/devel/share/maven/
      Transferring 2K from remote
      Uploaded 2K
      [100%] Built target galileo_serial_server_generate_messages_java_gradle
      Scanning dependencies of target galileo_serial_server_generate_messages
      [100%] Built target galileo_serial_server_generate_messages
      

      从输出中可以看出,消息的jar包已经生成到了/home/xiaoqiang/Documents/ros/devel/share/maven/文件夹中

      0_1539311040223_4410be69-f46d-4f19-9622-c91dc1da7fa8-image.png

      把此jar文件复制到Android项目中的 app\libs文件夹中。

      右键点击app,在弹出的菜单中点击Open Module Settings

      0_1539311262707_927ba11a-1a93-4994-a662-d4ff2997a67f-image.png

      0_1539311306670_c41eb533-ad59-43f9-b98d-5724913526c0-image.png

      选择dependencies页面,然后点击右侧加号

      选择jar dependencies,然后选择jar文件点击确认就可以了

      0_1539311384074_13a799a9-3aff-448a-a5b4-61fad7960cf3-image.png

      这样就可以在程序中使用自定义的消息了。

      5. ROS Android的程序设计模式

      在ROS Android库中,ROS的相关操作都是异步的(通过回调的方式),比如创建节点,发布和订阅消息。这个在使用中会比较麻烦。比如我们需要实现点击一个按钮就发布一个消息的功能。就需要把这个发布消息的程序封装成一个类,然后继承CancellableLoop。在loop中发布消息。同时提供一个发布消息的方法给别人调用。
      比如下面的方法

      
      public class GalileoCommander extends CancellableLoop {
      
          private Publisher<galileo_serial_server.GalileoNativeCmds> pub;
          private ConnectedNode node;
          private Queue<byte[]> cmdList;
      
          public GalileoCommander(ConnectedNode connectedNode){
              node = connectedNode;
              cmdList = new LinkedBlockingQueue<>(100);
              pub = connectedNode.newPublisher("/test", GalileoNativeCmds._TYPE);
          }
      
          public void sendCmds(byte[] cmds){
              if(!cmdList.offer(cmds)){
                  cmdList.poll();
                  cmdList.offer(cmds);
              }
          }
      
          @Override
          protected void loop() throws InterruptedException {
              byte[] cmd = cmdList.poll();
              if(cmd == null){
                  Thread.sleep(1);
              }else{
                  galileo_serial_server.GalileoNativeCmds galileo_cmd =  pub.newMessage();
                  galileo_cmd.setLength(cmd.length);
                  pub.publish(galileo_cmd);
              }
          }
      }
      

      使用时

      nodeMainExecutor.execute(new NodeMain() {
          @Override
          public GraphName getDefaultNodeName() {
              return GraphName.of("test_node");
          }
      
          @Override
          public void onStart(ConnectedNode connectedNode) {
              galileoCommander = new GalileoCommander(connectedNode);
              connectedNode.executeCancellableLoop(galileoCommander);
          }
      }, nodeConfiguration)
      

      这是我目前想到的比较好的模式,如果有其他更好的方法也欢迎交流。

      posted in 技术交流
      weijiz
      weijiz
    • RE: 关于map_server的问题

      @not-old-wang 我上传试了一下是可以的,你可以点击最右边的上传文件试试。也可以加入我们的ROS群(538456117)方便交流。

      posted in 技术交流
      weijiz
      weijiz
    • RE: 关于map_server的问题

      @not-old-wang 地图没有上传成功

      posted in 技术交流
      weijiz
      weijiz
    • RE: 小强ROS机器人教程(27)___bw_auto_dock自动充电功能包的使用和实现原理

      @yuggy 如果是一样的就不用remap了,直接删除这行remap from=“/odom” to=“/xqserial_server/Odom”

      posted in 产品服务
      weijiz
      weijiz
    • RE: 小强ROS机器人教程(27)___bw_auto_dock自动充电功能包的使用和实现原理

      @yuggy 之前那位的问题是没有odom数据。你可以看看你的odom数据是不是正常。也可以加入我们的交流群 538456117

      posted in 产品服务
      weijiz
      weijiz
    • RE: 关于map_server的问题

      @not-old-wang 是不是地图数据有问题,你可以把地图发上来看看。

      posted in 技术交流
      weijiz
      weijiz
    • RE: hikey 970 debian 镜像(有opencl 和 tensorflow)

      @xiaofeimo1 不会,官方也没有提供。不过这里有一个制作Ubuntu镜像的源。但是这个镜像还有一些问题。

      posted in 技术交流
      weijiz
      weijiz
    • Solution to add mjpeg format support for usb_cam

      work in progress

      posted in 技术交流
      weijiz
      weijiz
    • Visual Navigation Path Editor Tutorial

      Xiaoqiang Homepage

      Using Xiaoqiang can create a three-dimensional map of the surrounding environment, but how to use this map to visual tracking? The Visual Navigation Path Editor was written to implement this feature. With this tool you can mark the trajectory in map. Then export the generated track file to Xiaoqiang, and Xiaoqiang will be able to move according to the track you have drawn. The following describes in detail how to use the software.

      Installation

      Ubuntu deb installation package can be downloaded here and the source code is here.

      After the download is complete, execute the following command to install.

      Note that this path editor is not compatible with the new version of the navigation program. For the new version of the navigation program, please use the Windows client

      sudo dpkg -i path-drawer_1.0.0_amd64.deb
      

      Wait for the installation to complete.

      Collecting spatial data

      The path editor needs to load the spatial data collected by Xiaoqiang to be able to operate. For detailed operations, please refer to this article. After clicking the Save button, the map information will be saved to the /home/xiaoqiang/slamdb folder.

      Launch software

      After the installation is complete, you can find the program named Path Drawer in the Ubuntu Dash menu, and click on the software icon.

      0_1537770562799_bdbc5fd0-15e6-4750-af47-c36f9f46e957-image.png

      Import Data

      The software interface after startup is shown as below

      0_1537770589651_9d31ed9c-d1f8-4b27-8976-b1223760aa0a-image.png

      In the menu at the top left, select File -> Import Map Data. In the file selection dialog that pops up, select the /home/xiaoqiang/slamdb/mappoints.bson file. After import succeed, you can see the data of the map points in the software. This is a top view.

      0_1537770625199_4569b7ad-1f69-48e7-af7b-6e428ce8b935-image.png

      Then continue to select the file in the menu in the upper left corner and then import the path file. In the file selection dialog that pops up, select the /home/xiaoqiang/slamdb/keyframes.bson file. After import succeed, you can see the path of the previous car walking in the software.

      0_1537770646603_4cecdeb0-e515-4c9e-8232-203a017cb9a5-image.png

      Draw a navigation route

      The navigation path is the path you want xiaoqiang to walk. When the data is exported to Xiaoqiang, Xiaoqiang will move according to the path you draw. Here’s how to use the path drawing tool.

      1. Basic operations Basic operations include panning and zooming. If you drag the map with the left mouse button, you can the translation of the map. The scrolling of the mouse scrolls can zooming of the map, which is very useful in the process of drawing paths. For more detailed requirements on the movement, you can zoom in and draw.

      2. The line tool: clicks the pencil-like icon in the left-hand toolbar. This is the line tool. left mouse button click on any point on the graph, and then move the mouse will appear a red line. Move the mouse to the desired end position, click the left mouse button again, a straight line to draw the finished. After you click the left button, you can cancel the drawing by right-clicking.

        0_1537770689613_4dd2097f-e788-49af-89fb-d7ed93880347-image.png

      3. The eraser tool: Click on the Eraser tool in the left-hand toolbar and then presses the left mouse button to drag to erase the previously drawn point

        0_1537772652433_c7b56e68-b61c-4f7c-950a-b40ead897c8c-image.png

      4. Curve tool: Click on the left Curve tool, click the left mouse button at the beginning of the curve, then click the left mouse button again in the middle of the curve, and finally click on the end point of the curve. So a curve is drawn and done.

        0_1537772779768_56597e82-8cac-459d-851e-a0232c13085b-image.png

      5. Delete tool: if you want to delete a large range of points drawn before, then you can take advantage of this removal tool. Click the Delete tool on the left and click the left mouse button to delete the starting point, you can see in the mouse movement process has a rectangle has been following. Click the left mouse button again to delete the rectangle’s selected range. Right-click to cancel the selection.

      Using these tools, you can draw xiaoiang’s navigation path. Be careful to draw the line as far as possible along the original trajectory, so that the path is unobstructed during the movement. From the green map point you can see the terrain, based on the information to draw the points allowed by the range of motion.

      Set navigation key points

      For more complex graphics, there are many ways to move. For example, a figure-eight path, Xiaoqiang may move around one of the circles first, then move around another circle, or two circles may cross each other. Therefore, it is necessary to specify the specific way of the Xiaoqiang movement. Let’s take a circular trajectory as an example. In a circular trajectory, Xiaoqiang can move clockwise and also counterclockwise.

      0_1537773433983_77aa42a7-8771-47e2-b6a0-be0c4c690cf3-image.png

      Click the navigation point settings button at the bottom of the toolbar on the left. Then start marking key points. Feel free to click on a point on the navigation route and you can see that there is a 0 at this point. This indicates that point 0 has been added here.

      0_1537773448603_0689e371-c1a1-485e-9bc0-0b6f69921ee5-image.png

      If you want to make Xiaoqiang counterclockwise, you can mark a point on the right side. Just add the key points in turn

      0_1537773462626_ae6fbce5-d086-4c03-be35-e8fea72c63bb-image.png

      Click the right mouse button to delete a recently added navigation point. You can also use the eraser and delete tools to delete navigation points. Xiaoqiang will move in the order of the key points.

      Export data

      1. Export the navigation path file After the navigation path is drawn, click File -> Export Navigation Path File in the menu in the upper left corner and select the location where the file is saved. After exporting the file, you can also import it from the menu for secondary editing.

      2. Export Navigation Key File After the navigation key is drawn, click File -> Save Navigation Point in the menu in the upper left corner and select the file save location. After exporting the file, you can also import it from the menu again for secondary editing. Note: Navigation keys can only be imported after the navigation path file has been successfully imported.

      The exported data can be placed in Xiaoqiang’s corresponding folder to start visual navigation.

      Xiaoqiang Homepage
      Back To Index

      posted in 产品服务
      weijiz
      weijiz
    • Cartographer install and demo

      Xiaoqiang Homepage

      Cartographer is a set of laser radar slam algorithm that was open sourced by Google in September 2016. Its precision and effect are among the best in the industry. This article will demonstrate how to use Cartographer in the ROS Kinetic. Click to view the result video.

      Steps:

      1. Installation dependency package

        # Install the required libraries that are available as debs.
        sudo apt-get update
        sudo apt-get install -y \
            cmake \
            g++ \
            git \
            google-mock \
            libboost-all-dev \
            libcairo2-dev \
            libeigen3-dev \
            libgflags-dev \
            libgoogle-glog-dev \
            liblua5.2-dev \
            libprotobuf-dev \
            libsuitesparse-dev \
            libwebp-dev \
            ninja-build \
            protobuf-compiler \
            python-sphinx
        
      2. Install ceres solver

        cd  ~/Documents
        git clone https://github.com/BlueWhaleRobot/ceres-solver.git
        cd ceres-solver
        mkdir build
        cd build
        cmake ..
        make -j
        sudo make install
        
      3. Install prtobuf 3.0

        cd  ~/Documents
        git clone https://github.com/google/protobuf.git
        cd protobuf
        git checkout v3.6.1
        mkdir build
        cd build
        cmake  \
          -DCMAKE_POSITION_INDEPENDENT_CODE=ON \
          -DCMAKE_BUILD_TYPE=Release \
          -Dprotobuf_BUILD_TESTS=OFF \
          ../cmake
        make -j 2
        sudo make install
        
      4. Install cartographer

        cd  ~/Documents
        git clone https://github.com/BlueWhaleRobot/cartographer.git
        cd cartographer
        mkdir build
        cd build
        cmake ..
        make -j
        sudo make install
        
      5. Install cartographer_ros

        cd ~/Documents/ros/src   #请修改路径到自己的ROS catkin工作空间
        git clone https://github.com/BlueWhaleRobot/cartographer_ros.git
        cd ..
        catkin_make
        
      6. The installation is complete, start downloading the bag file for testing

        Click the link to download the file and save it to your desktop.

      7. Start the demo, you can see rviz start and start to build

        According to the computing power of the personal platform, the complete running time of this demo is generally between half an hour and one hour.

        roslaunch cartographer_ros offline_backpack_2d.launch  bag_filenames:=${HOME}/Desktop/cartographer_paper_deutsches_museum.bag
        
      8. Save the map and end the test

        roslaunch cartographer_ros assets_writer_ros_map.launch bag_filenames:=${HOME}/Desktop/cartographer_paper_deutsches_museum.bag pose_graph_filename:=${HOME}/Desktop/cartographer_paper_deutsches_museum.bag.pbstream
        

        0_1537779460656_5c69cece-2c57-482f-887e-540032f84832-image.png

        The created map file will now be generated in the .ros folder in the home directory. These two files (pgm and yaml) can be loaded in the map_server in ros.

      Xiaoqiang Homepage
      Back To Index

      posted in 产品服务
      weijiz
      weijiz
    • PS3 joystick ROS driver

      Xiaoqiang Homepage

      The ros driver of the ps3 controller is ps3joy in the joystick_drivers package. This driver supports the original Sony handle, but there is a problem with the support of some others ps3 controllers. We have modified on the basis of ps3joy, added a ps3joyfake_node.py script as a driver for other joysticks, the package source code address is here. Let’s take Xiaoqiang as an example to demonstrate the installation steps and simple usage of this package.

      installation steps

      ssh enters Xiaoqiang ros workspace, compile after downloading the source code. If you have install xiaoqiang system image, you can skip this step.

      ssh xiaoqiang@192.168.xxx.xxx
      cd Documents/ros/src/
      git clone https://github.com/BlueWhaleRobot/joystick_drivers.git
      cd ..
      catkin_make
      If the following error is prompted
      error spnav.h no such file
      First install the following package, then re-execute catkin_makee
      sudo apt-get install libspnav-dev
      

      Quick usage

      After ps3joyfake_node.py starts, it converts the data of the joystick button received by bluetooth into the standard joy msg, and publishes it in ros with /joy as the topic, that is, a file of ps3joyfake_node.py is equivalent to two files of ps3joy.py + joy_node. It is no longer necessary to open the joy_node node in actual use.

      1. Bind the joystick to the usb bluetooth adapter, just bind once, skip this step next time.

        Connect the joystick to the host through the usb data cable, and plug the USB bluetooth adapter into the host.

        sudo bash
        rosrun ps3joy sixpair
        

        At this point, you will get an output similar to following. The current and setting mac addresses are the same.

        Current Bluetooth master: 00:22:b0:d0:5a:09
        Setting master bd_addr to 00:22:b0:d0:5a:09
        
        # If the following error occurs
        Current Bluetooth master: 00:1b:dc:00:07:3c
        Unable to retrieve local bd_addr from `hcitool dev`.
        Please enable Bluetooth or specify an address manually.
        # Run
        hciconfig hci0 reset
        # If you run hciconfig hci0 reset error
        # Can't init device hci0: Operation not possible due to  
        # Run 
        rfkill unblock all 
        # and run 
        hciconfig hci0 reset
        # rerun
        rosrun ps3joy sixpair
        

        After the binding setting is completed, disconnect the handle and the usb connection of the host.

        Ctrl+D exits root mode

      2. Pair the handle with the usb Bluetooth adapter

        # Make sure the Bluetooth receiver is plugged into the host usb port
        sudo bash
        rosrun ps3joy ps3joyfake_node.py
        

        The following prompt will appear normally.

        root@xiaoqiang-desktop:~# rosrun ps3joy ps3joyfake_node.py 
        No inactivity timeout was set. (Run with --help for details.)
        Waiting for connection. Disconnect your PS3 joystick from USB and press     the pairing button.
        If the following error is prompted
        ImportError: No module named bluethooth
        Please install the following packages first, then re-run
        sudo apt-get install libbluetooth-dev
        sudo pip install PyBluez
        

        Press the joystick pairing button in the image below

        0_1537779842259_e2a1873d-f564-4ba1-9d0c-ff7d3574f8e1-image.png

        If the pairing is successful, the above window will output a result similar to the following.

        root@xiaoqiang-desktop:~# rosrun ps3joy ps3joyfake_node.py 
        No inactivity timeout was set. (Run with --help for details.)
        Waiting for connection. Disconnect your PS3 joystick from USB and press the pairing button.
        Connection activated
        
      3. View handle output

        # Open a new window and print the button output
        rostopic echo /joy
        

        Normally the following similar results will appear

        header: 
          seq: 297
          stamp: 
            secs: 1488877867
            nsecs: 535818099
          frame_id: ''
        axes: [0.0, 0.0, 0.0, 0.0, -1.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.0, 0.21316899359226227, 0.0]
        buttons: [0, 0, 0, 0, 1, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0]
        

        As we can see that the fourth button was pressed.

      4. Start the relevant joy msg processing node

        Be careful not to start the joy_node again.

        # Take Xiaoqiang as an example. After launching the following launch file, you can remotely move Xiaoqiang.
        roslaunch turtlebot_teleop ps3fakexiaoqiang_teleop.launch
        

      For xiaoqiang user with a joystick you can also use the joystick according to this tutorial

      When step 1 is bound, if the prompt cannot find the handle device and cannot be bound, you can perform the following two steps to solve the problem: 1. Click the Bluetooth icon in the upper right corner of the system desktop to close the connected Bluetooth handle service.

      0_1537789925803_df37f5e8-5c58-469f-9156-408c2d6508d7-image.png

      0_1537789931907_a7e7225e-ecb2-4b86-9363-2afe70fb0e99-image.png

      Xiaoqiang Homepage
      Back To Index

      posted in 产品服务
      weijiz
      weijiz
    • Install VNC on Ubuntu

      When using Ubuntu often requires Remote Desktop connection, the most common software is VNC. VNC is an open protocol that implements a lot of clients. But after comparing the various implementations, the best is now x11vnc. This program is not only free of charge, open source, but also supports OpenGL programs. For example, rviz and other programs can also open normally.

      The X11VNC is already installed by default in the xiaoqiang system image, and if you use a xiaoqiang host or mirror, you can skip the installation process directly. Just follow the instructions for accessing the service.

      The installation method is described below. The following is an example of Ubuntu 14.04, if it is 16.04 and later version, you need to edit the service configuration file.

      Installing X11VNC

      sudo apt-get install x11vnc -y
      

      Set access password

      sudo x11vnc -storepasswd /etc/x11vnc.pass 
      

      Create a service file

      Under/etc/init, create a x11vnc.conf file with the following file contents

      description "xiaoqiang vnc server"
      start on runlevel [2345]
      stop on runlevel [06]
      
      script
          exec /usr/bin/x11vnc -auth guess -capslock -forever -loop -noxdamage -repeat -rfbauth /etc/x11vnc.pass -rfbport 5900 -shared
      end script
      

      Start the service

      sudo service x11vnc start
      

      Access the service

      Download a VNC client, such as download from here

      Start the client, enter target ip address

      0_1537790364280_011a41c8-3b09-4c30-997f-eb9b2f9c91cb-image.png

      and then enter access password

      0_1537790385233_6e7da6ba-18eb-4809-b717-91a7fdcaf653-image.png

      Then you can connect normally.

      For Ubuntu 16.04 and later, You can configure your service file according to this script

      Note When the installation is complete, you may still get an error when you use rviz without plugging in the monitor. Just plug in the HDMI to VGA adapter (do not connect the monitor, just the adapter) can be turned on normal use. If you want to adjust the resolution in the same way as normal computer settings, adjust the settings inside system settings

      posted in 产品服务
      weijiz
      weijiz
    • xiaoqiang tutorials

      Xiaoqiang Homepage

      Quick Start

      • 1. xiaoqiang quick start guide

      Xiaoqiang ROS tutorial

      • 1. Basic operation introduction and remote control in LAN
      • 2. Bluewhale Robot Open source code repository usage and ROS startup task configuration
      • 3. Displaying Xiaoqiang Robot Model in rviz
      • 4. Inertial navigation test
      • 5. xiaoqiang remote control app for Android
      • 6. xiaoqiang remote control Windows client
      • 7. use PS3 joystick to control xiaoqiang
      • 8. kinect v1 ROS driver test and installation
      • 9. use rostopic to control kinect tilt angle
      • 10. use kinect for autonomous mobile and obstacle avoidance
      • 11. kinect follow package turtlebot_follower
      • 12. display point cloud for kinect2
      • 13. rplidar A2 LiDAR useage and set udev rules for serial devices for xiaoqiang
      • 14. using rplidar A2 with gmapping
      • 15. AMCL navigation test
      • 16. large-scale lidar slam and real-time loop closure test
      • 17. using ORB_SLAM2 to create a three-dimensional model of the environment
      • 18. 3D modeling using DSO_SLAM
      • 19. usage of NLlinepatrol_planner
      • 20. get vision odometer and display the xiaoqiang track in the rviz
      • 21. get USB camera 30fps 1080p image stream and 120fps VGA resolution image stream
      • 22. Operating 6 DOF robotic arm
      • 23. ROS introductions

      Maintenance

      • Maintenance
      • Xiaoqiang Bottom Driver Firmware Download and Upgrade Methods
      • Upgrade chassis ros driver package xqserial_server
      • Recalibrate the chassis IMU
      • Bluewhale ROS system image released

      Other Tutorials

      • How Ubuntu sets static IP
      • Xiaoqiang’s remote assistance function
      • Google lidar slam algorithm Cartographer installation and bag package demo test
      • Install VNC on Ubuntu
      • PS3 joystick ROS driver
      • Cartographer install and demo
      • Visual Navigation Path Editor Tutorial
      posted in 产品服务
      weijiz
      weijiz
    • 1
    • 2
    • 20
    • 21
    • 22
    • 23
    • 24
    • 35
    • 36
    • 22 / 36