Resources
Macbook Air with Ubuntu virtual machine via VMWare
Pioneer3 AT robot
ROS
RosAria
Context
I have at least most of the setup for Ros+RosAria already working:
The master ROS node running on a laptop at 192.168.1.112 via roscore
The RosAria node running on the robot’s built-in computer at 192.168.1.108 via rosrun rosaria RosAria, the port set accordingly to access the robot's motors and sensors via rosparam set..., ROS_MASTER_URI=192.168.1.112:11311, and ROS_IP=192.168.1.112.
Another terminal window on the laptop running rostopic pub /RosAria/cmd_vel geometry_msgs/Twist “linear:... angular:...”
The RosAria node running on the robot confirms it’s able to connect to the master, and if I run the command rostopic list on the laptop I can see /RosAria/cmd_vel as one of the available topics.
In the terminal window where I try to publish to /RosAria/cmd_vel I’m told that the message is sending but the robot shows no signs of having received it, neither console message nor movement of the wheels.
However, if I quit the RosAria node on the robot and restart it while leaving the rostopic pub command running on my laptop, the robot registers the message once upon startup, moves accordingly for a bit, and then does nothing.
I’ve also tried to rostopic echo other topics like battery state, motors status and pose, but I don’t receive any messages from the robot.
I already tried changing the parameters /RosAria/TicksMM and /RosAria/RevCount according to this case.
Question
Why is the Pioneer robot with RosAria running not receiving the cmd_vel commands from my client if it’s apparently able to communicate with the master node successfully?
Disclaimer
The project I was working on where this problem came up isn’t using the same equipment anymore, so now this question is not so urgent for me. I’m also not able to test proposed solutions in the near future since I no longer have access to that Pioneer robot. However, I’ll keep this topic unanswered in case someone else encounters this problem too.
You need To Set ROS_IP On Robot side too to let the ROS System Knows What IP To Use as It's Network Interface
I myself Set This Environments Inside .bashrc Like This:
export ROS_IP=192.168.1.108
and then source .bashrc.
I think You can use rosparam Too But I never tested.
Related
I'm trying to setup nektos/act locally so I can test my github workflows. When I run act -l I'm receving the follow working.
⚠ You are using Apple M1 chip and you have not specified container architecture, you might encounter issues while running act. If so, try running it with '--container-architecture linux/amd64'. ⚠
Do you know how can why and how I can get rid of this warning?
Not sure if this is true, but it seems that I need to configure something in docker?
Ok, so here's my background first. I'm a noob in the world of commandline interfaces, but have been building websites off and on for a long time (10 yrs) using GUI's. So, I'm trying to make the switch to CLI's while also learning Docker.
Right now I'm stuck at trying to get Docker to load anything into my browser window. Here's what I've done successfully:
Installed Docker CE on my Windows 10 Machine
Setup a new virtual switch in Hyper-V Manager per these instructions and restarted the computer.
Created a new machine using this line of code docker-machine create -d hyperv --hyperv-virtual-switch "Primary Virtual Switch" manager1
Now here's where things get a little interesting. When I run the above function (I've done it twice now) it stalls on the line: Waiting for host to start...
I waited for five minutes to see if it would do anything, before killing the operation. (oh, did I mention I'm running PowerShell in Adminstrator Mode - right click on the icon to "run as administrator").
So when I re-open PowerShell to check if the new "manager1" machine has been created it comes back affirmative, but with this:
PS C:\WINDOWS\system32> docker-machine ls
NAME ACTIVE DRIVER STATE URL SWARM DOCKER ERRORS
manager1 * hyperv Running Unknown IP not found
As far as I can tell these are the steps that I need to take to get Docker to run locally in my browser window, but for the life of me, I'm lost!
Oh, I did downgrade my docker-machine version per a suggestion that I read in a git forum comment, but that was to remedy an issue with the docker-machine create command. Part of me wonders if I'm doing too much. But I honestly don't know what to do next.
UPDATE:
I don't know that this is progress, but in the Virtual Switch Manager, I did switch the external network device from the "Ethernet Connection" to the "Dual Band Wireless" option. Then I restarted my machine. Now I'm showing that the state of the machine is "Timeout". I've also started and stopped my "docker-machine manager1". It sites on the (manager1) Waiting for host to start... line for about half a minute, then proceed to the Waiting for SSH to be available... where it just sits. Here's another screen shot that captures this:
Ok, my confusion was a result of looking beyond the documentation and getting a little confused. I still don't have this fully figured out but everything I was attempting to accomplish is detailed in this getting started with Windows 10 pro article.
I have a Jenkins set-up where there is a master running on OS X with a Windows slave running on the same box as VM.
On many occasions when the VM is restarted the Jenkins service appears to either not start or possible encounters an error.
The set-up of the service looks correct and the VM is configured to automatically login as the Jenkins user, when its manually started everything seems to work fine so I can only assume the problem is on start-up of the box.
I have two questions:
Are there any well known gotcha's that can cause this?
Does anyone have some good strategies for debugging this? I'm assuming the answer will be somewhere in the Windows Logs but finding it is proving difficult (since the box and the user both contain the word Jenkins a simple find isn't helpful).
Is it possible for this setting to work?
1) Ubuntu 14 with Jenkins, Genymotion, and Virtual Box installed
2) The job inside Jenkins will restore and run Genymotion from a command line following this tutorial: http://blog.genymobile.com/genymotion-jenkins-android-testing/
From my Mac, I tried to access the Jenkins website and run the build.
Firstly, Genymotion failed because it couldn't "connect to X server".
So, I installed Xvnc Plugin on Jenkins which solved the error.
Unfortunately, Genymotion still failed to start up with the error "Cannot get IP address".
Please note that I only have "ssh -X" access to the server.
I can manually start up Genymotion but the process was terminated when I logged off. As a result, I could not leave the GenyMotion run on the Server as suggested by this solution: Jenkins - Use Genymotion VM instead of Android Emulator
Any advice?
Here is the way to make Genymotion works on a continuous integration server.
First, the computer running Genymotion needs to respect the hardware requirements
You won't be able to run Genymotion if you don't have an X server running.
I don't think xVNC supports OpenGL so I advise you to run your standard X server.
You can launch the Xorg server by running startx.
Then you need to set your ssh connection in Jenkins without the -X parameter because we want the rendering to be done locally
Then you need to declare the environement variable DISPLAY to the default X client's value. Most of the time it is :0
This value will ask to open all the windows you launch through the ssh connexion into the first X client. It is the one running on the computer screen.
To check the DISPLAY value you need to enter, you need to access the computer physically and type echo $DISPLAY. Most of the time this value is :0
Also, if your computer is not compatible with the hardware requirements, you can use another computer on your network to run your tests thanks to the Jenkins nodes. Here is a good tutorial to set it up.
And finally, I want to mention we will soon release a command line tool for Genymotion and a Gradle Plugin that will allows you to control your Genymotion devices running during your tests directly from your build.gradle file.
It`s a bit late, but maybe this could help you out
### Get IP address of selected VM
VM_IP=`VBoxManage guestproperty get $VM_SELECTED androvm_ip_management | awk - F ": " '{print $2}'`
I found this here (repo) respectively here (slides)
For Android there is ADB (Android debug bridge) which allows to get a shell on the connected device:
adb shell
Is there something similar for iOS?
I'd like to type some shell commands on my Mac that would be executed on the connected iPhone.
Is there a built-in Terminal on iPhone?
There isn't anything for it built in, but if you are jailbroken or can sideload apps (a.k.a., you have a mac with XCode), you can run a local terminal with apps like MobileTerminal, which aren't available on the app store.
To access a shell from a computer, if you are jailbroken (and possibly even if you aren't, if you can sideload apps) you can install openssh or openssh-server from Cydia (I believe it is just called "OpenSSH" in the GUI). Once that is running on your device, you can connect the device over USB and use this shell script I made called idb to access a shell, push and pull files, and so on. This sets up a USB link to relay TCP packets from the SSH server on the device, and then 'wraps' around SSH and SCP to perform the required tasks.
You'll have to compile a program to make it work called iproxy; this program relays TCP over the USB bus to allow ssh over a cable. The comments in the script I wrote explain how to do this (sorry... I plan to move it into README.md eventually).
The program follows most of the syntax of adb and implements some of the more commonly used operations of it.
Without jailbreaking, your options are more limited, but it may be possible to do something. I haven't tried since I don't regularly use iOS anymore.
use ssh through network (e.g. Wi-Fi), and iphone/ipad need download and enable ssh service, firstly.