User Tools

Site Tools


misc:hacks:rasberrypi

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
Next revision Both sides next revision
misc:hacks:rasberrypi [2013-06-10 01:33]
absoloodle37
misc:hacks:rasberrypi [2013-08-13 03:54]
absoloodle37 Identified xbox controller input and corresponding id's in .json file
Line 83: Line 83:
 </code> </code>
  
-**Note**: If you created a customized .json file for your xbox controller using a Windows PC and the cfclient GUI and are planning to copy it over to your Raspberry Pi, here is some advice:+===== Manually Customizing Your .json Configuration File ===== 
 +If you created a customized .json file for your xbox controller using a Windows PC and the cfclient GUI and are planning to copy it over to your Raspberry Pi, here is some advice:
  
 -save the new .json file as something different than the default, so you can recognize it easily.  e.g. xbox360new.json -save the new .json file as something different than the default, so you can recognize it easily.  e.g. xbox360new.json
Line 89: Line 90:
 -the new .json file is not located in the Program Files(x64)/cfclient/input folder along with all the other default .json files; it's actually located in a hidden folder in your home directory.  Use the run... command from the start menu to get to it.  Type C:\Users\<your user name>\AppData\Roaming\cfclient\input\ to get to the right location of your new .json file -the new .json file is not located in the Program Files(x64)/cfclient/input folder along with all the other default .json files; it's actually located in a hidden folder in your home directory.  Use the run... command from the start menu to get to it.  Type C:\Users\<your user name>\AppData\Roaming\cfclient\input\ to get to the right location of your new .json file
  
--copy your new .json file into the correct RPi folder: /crazyflie-pc-client/conf/input/ Getting your customized .json file from your windows pc to your raspberry pi can be tricky.  Emailing it to yourself and accessing it using a RPi internet browser (like Midori) won't work because most email sites (hotmail, Gmail, etc.) require Java to access and RPi can't use Java.  USB flash drives need to be formatted correctly and that's a pain.  Not sure if you can ssh into your RPi from your Windows machine and copy the file over somehow using a Linux command Found a solution if you have access to a Mac-- install Netatalk on your Mac (http://gettingstartedwithraspberrypi.tumblr.com/post/24398167109/file-sharing-with-afp-and-auto-discovery-with-bonjour) and your RPi will show up magically in the finder window on your Mac.  +-copy your new .json file into the correct RPi folder: /crazyflie-pc-client/conf/input/ Getting your customized .json file from your windows pc to your raspberry pi can be tricky.  Emailing it to yourself and accessing it using a RPi internet browser (like Midori) won't work because most email sites (hotmail, Gmail, etc.) require Java to access and RPi can't use Java.  USB flash drives need to be formatted correctly and that's a pain.  Try using WinSCP to move files from your Windows PC to the RPi: (http://winscp.net/eng/index.php) I also found a solution if you have access to a Mac-- install Netatalk on your Mac (http://gettingstartedwithraspberrypi.tumblr.com/post/24398167109/file-sharing-with-afp-and-auto-discovery-with-bonjour) and your RPi will show up magically in the finder window on your Mac.  
  
 <code>sudo apt-get install netatalk</code> <code>sudo apt-get install netatalk</code>
Line 95: Line 96:
 Verify netatalk was installed successfully on your RPi by checking the Finder window on your Mac for a "Raspberry Pi" shared drive. On your windows machine, copy your new .json file to a flash drive and plug it into your Mac. Then you can just drag/drop your new .json file from the flash drive into the /crazyflie-pc-client/conf/input/ folder using your Mac (thanks to Netatalk).   Verify netatalk was installed successfully on your RPi by checking the Finder window on your Mac for a "Raspberry Pi" shared drive. On your windows machine, copy your new .json file to a flash drive and plug it into your Mac. Then you can just drag/drop your new .json file from the flash drive into the /crazyflie-pc-client/conf/input/ folder using your Mac (thanks to Netatalk).  
  
--the cfheadless client on RPi may not recognize the same controller channel "id" numbers that were correct for your .json file when it worked on your Windows machine.  Mine didn't recognize the roll command, so when I flew, the CF just had pitch, yaw, and thrust using the controller sticks--no roll, but the right trigger would roll the CF hard to the right.  Using nano <my xbox config file>.json, I viewed/edited my .json file to identify which "id" was associated with the Right trigger and swapped it with the roll "id" number:  Had to change the roll "id" from 4 to 0 and whatever input was associated with 4, I changed the "id" of that one to 0.  Bottom line: If your .json file isn't controlling your CF correctly, experiment with the "id" numbers in your .json file.  Just remember not to duplicate any "id" numbers.  A number can only be used once in the file.+-the cfheadless client on RPi may not recognize the same controller channel "id" numbers that were correct for your .json file when it worked on your Windows machine.  Mine didn't recognize the roll command, so when I flew, the CF just had pitch, yaw, and thrust using the controller sticks--no roll, but the right trigger would roll the CF hard to the right.  Using nano <my xbox config file>.json, I viewed/edited my .json file to identify which "id" was associated with the Right trigger and swapped it with the roll "id" number:  Had to change the roll "id" from 4 to 0 and whatever input was associated with 4, I changed the "id" of that one to 0.  Bottom line: If your .json file isn't controlling your CF correctly, experiment with the "id" numbers in your .json file.  Just remember not to duplicate any "id" numbers.  A number can only be used once in the file.  Here's what worked for me:
  
 +Xbox Controller Input = id#
 +
 +Left stick vertical = 1
 +
 +Left stick horizontal = 0
 +
 +Right stick vertical = 3
 +
 +Right stick horizontal = 2
 +
 +Right trigger = 4
 +
 +Customize your flying configuration anyway you like using the inputs/id's above as a reference.
  
 **Note**: If you have more than one controller attached, you can select the one to use using the commandline parameter ''-c''. See ''cfheadless -h'' for available command line options: **Note**: If you have more than one controller attached, you can select the one to use using the commandline parameter ''-c''. See ''cfheadless -h'' for available command line options:
Line 128: Line 142:
  
 [[http://forum.bitcraze.se/viewtopic.php?p=417#p417|Marcus added]] the following things to note when using the headless client since it is a very early version: [[http://forum.bitcraze.se/viewtopic.php?p=417#p417|Marcus added]] the following things to note when using the headless client since it is a very early version:
-  * Still dependent on QT (the plan is to remove this very soon) +  * <del>Still dependent on QT (the plan is to remove this very soon)</del> Not dependent on QT anymore 
-  * Not much error handling yet (the plan is to improve this)+  * <del>Not much error handling yet (the plan is to improve this)</del> Better error handling. If something does wrong the client exists.
   * <del>Values are still hardcoded in the script (like mapping and URI for Crazyflie). They can be changed at the bottom in lib/cfheadless.py</del> -> **Update** [[https://bitbucket.org/bitcraze/crazyflie-pc-client/pull-request/7/command-line-options-for-radio-uri/diff|A pull request]] adding some command line options for setting the input mapping and radio URI to use has been accepted, update your client to use that.   * <del>Values are still hardcoded in the script (like mapping and URI for Crazyflie). They can be changed at the bottom in lib/cfheadless.py</del> -> **Update** [[https://bitbucket.org/bitcraze/crazyflie-pc-client/pull-request/7/command-line-options-for-radio-uri/diff|A pull request]] adding some command line options for setting the input mapping and radio URI to use has been accepted, update your client to use that.
   * <del>The headless client will open the first input-device found (so don't plug more than one)</del> -> **Update** [[https://bitbucket.org/bitcraze/crazyflie-pc-client/pull-request/7/command-line-options-for-radio-uri/diff|A pull request]] adding some command line option for selecting the used input device has been accepted, update your client to use that.   * <del>The headless client will open the first input-device found (so don't plug more than one)</del> -> **Update** [[https://bitbucket.org/bitcraze/crazyflie-pc-client/pull-request/7/command-line-options-for-radio-uri/diff|A pull request]] adding some command line option for selecting the used input device has been accepted, update your client to use that.
-  * No good way to quit it yet so you will have to kill the process+  * <del>No good way to quit it yet so you will have to kill the process</del> Press Ctrl-C or pull the dongle
 ===== Make the client startup automatically on Crazyradio plug in ===== ===== Make the client startup automatically on Crazyradio plug in =====
  
misc/hacks/rasberrypi.txt · Last modified: 2021-06-24 16:45 by kimberly