nasa / astrobee_android Goto Github PK
View Code? Open in Web Editor NEWNASA Astrobee Robot Software, Android
Home Page: https://www.nasa.gov/astrobee
License: Apache License 2.0
NASA Astrobee Robot Software, Android
Home Page: https://www.nasa.gov/astrobee
License: Apache License 2.0
I am developing an guest science application and need the position of the Astrobee. I can't tell if I am receiving the coordinates and I cannot get log output to show up in Logcat. Is it recommended to log to files or is Logcat working for other developers? The log output shows up if I launch with adb
, but I think factory.getRobot()
fails when the app isn't launched with the guest science manager.
I am working on a project involves developing an Astrobee payload, and I am wondering how to turn on/off the payload bays and check the status. I looked through the repository source code and found the following definition, but there aren't any examples that use it. How do I operate the payloads?
// Copyright 2017 Intelligent Robotics Group, NASA ARC
package gov.nasa.arc.astrobee.types;
public enum PoweredComponent {
LASER_POINTER("Laser Pointer"),
PAYLOAD_TOP_AFT("Payload Top Aft"),
PAYLOAD_BOTTOM_AFT("Payload Bottom Aft"),
PAYLOAD_BOTTOM_FRONT("Payload Bottom Front"),
PMC("PMC");
private final String m_value;
PoweredComponent(final String value) {
m_value = value;
}
@Override
public String toString() {
return m_value;
}
}
The Astrobee ROS instructions for building the ROS packages recommend Ubuntu 20.04. However, the Astrobee Android API build instructions indicate that users need to install ros-kinetic-rosjava
in order to build the ff_msgs
jar, which cannot be installed properly on Ubuntu 20.04 (or possibly 18.04).
When using Ubuntu 20.04 I can only install ROS Noetic, so I tried to install ros-kinetic-rosjava
from source from this repo found using the ROS Wiki Source Installation Instructions. When I try to build ff_msgs
using the command make ff_msgs_generate_messages_java_gradle
, I get the following output:
ERROR: the following packages/stacks could not have their rosdep keys resolved to system dependencies:
rosjava_messages: Cannot locate rosdep definition for [world_canvas_msgs]
genjava: No definition of [python-catkin-pkg] for OS version [focal]
The error output indicates that the issue is caused by dependencies that have changed between the two ROS versions. The Astrobee ROS instructions indicate that the robot hardware on ISS currently runs Ubuntu 16.04, which is supported by ROS Kinetic. I am currently trying Ubuntu 16.04 to see if that works.
I am using an Inforce 6640 HLP Development board and a Dell PC tower to develop a Guest Science application. The development board is running the correct Inforce-IFC6601-AndroidBSP-880457-Rel-v2.1.zip
image, boots, and has been tested with a mouse and monitor. I am using Ubuntu 16.04 on the desktop PC with a cat5 cable going to the development board. The development board has been configured to use adb
via IP rather than USB, and the Guest Science Manager has been installed. The Guest Science Manager runs via the gs_manager.sh
script (confirmed with adb shell ps | grep gov
), and with Android Studio v3.6.3 I am also able to attach a debugger to the guest_science_manager
app (output shown later).
On both devices the /etc/hosts
file has been updated to provide definitions for hlp
and llp
. The Dell Ubuntu computer has a "Manual" connection made with the GUI as shown below:
Android /etc/hosts
:
127.0.0.1 localhost
::1 ip6-localhost
10.42.0.31 llp
10.42.0.33 hlp
Dell PC /etc/hosts
:
127.0.0.1 localhost
127.0.1.1 mei-Dell
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
10.42.0.31 llp
10.42.0.33 hlp
I pushed the text_file.sh
described in the HLP installation instructions to /persist/eth0.sh
as shown below:
#!/bin/sh
set -e
sleep 10
ip addr add 10.42.0.33/24 dev eth0
ip link set dev eth0 up
ip rule flush
ip rule add pref 32766 from all lookup main
ip rule add pref 32767 from all lookup default
In two terminals I have executed the following commands with resulting output to define ROS_MASTER_URI
. Both terminals are able to ping eachother:
From the Android adb shell to the development board, I am also able to ping the Dell PC as shown below:
This is the command and output when I run the Astrobee simulator:
mei@mei-Dell:~/astrobee$ roslaunch astrobee sim.launch dds:=false robot:=sim_pub rviz:=true
... logging to /home/mei/.ros/log/b91cc490-e3c0-11ed-8836-e454e8d86199/roslaunch-mei-Dell-12295.log
Checking log directory for disk usage. This may take awhile.
Press Ctrl-C to interrupt
Done checking log file disk usage. Usage is <1GB.
started roslaunch server http://10.42.0.31:38651/
SUMMARY
========
PARAMETERS
* /dock/robot_description: <?xml version="1....
* /handrail_21_5/robot_description: <?xml version="1....
* /handrail_30/robot_description: <?xml version="1....
* /handrail_41_5/robot_description: <?xml version="1....
* /handrail_8_5/robot_description: <?xml version="1....
* /iss/robot_description: <?xml version="1....
* /robot_description: <?xml version="1....
* /rosdistro: kinetic
* /rosversion: 1.12.17
* /simulation_speed: 1
* /use_sim_time: True
NODES
/
access_control (nodelet/nodelet)
arm (nodelet/nodelet)
astrobee_state_publisher (robot_state_publisher/robot_state_publisher)
choreographer (nodelet/nodelet)
ctl (nodelet/nodelet)
data_bagger (nodelet/nodelet)
depth_odometry_nodelet (nodelet/nodelet)
dock (nodelet/nodelet)
executive (nodelet/nodelet)
fam (nodelet/nodelet)
framestore (nodelet/nodelet)
gazebo (astrobee_gazebo/start_server)
global_transforms (framestore/global_transforms)
graph_loc (nodelet/nodelet)
handrail_detect (nodelet/nodelet)
image_sampler (nodelet/nodelet)
imu_aug (nodelet/nodelet)
imu_calibration (rosservice/rosservice)
llp_gnc (nodelet/nodelet)
llp_i2c (nodelet/nodelet)
llp_imu (nodelet/nodelet)
llp_imu_aug (nodelet/nodelet)
llp_lights (nodelet/nodelet)
llp_monitors (nodelet/nodelet)
llp_pmc (nodelet/nodelet)
llp_serial (nodelet/nodelet)
localization_manager (nodelet/nodelet)
mapper (nodelet/nodelet)
mlp_arm (nodelet/nodelet)
mlp_communications (nodelet/nodelet)
mlp_depth_cam (nodelet/nodelet)
mlp_dock (nodelet/nodelet)
mlp_graph_localization (nodelet/nodelet)
mlp_localization (nodelet/nodelet)
mlp_management (nodelet/nodelet)
mlp_mapper (nodelet/nodelet)
mlp_mobility (nodelet/nodelet)
mlp_monitors (nodelet/nodelet)
mlp_multibridge (nodelet/nodelet)
mlp_perch (nodelet/nodelet)
mlp_recording (nodelet/nodelet)
mlp_serial (nodelet/nodelet)
mlp_states (nodelet/nodelet)
mlp_vision (nodelet/nodelet)
mlp_vive (nodelet/nodelet)
perch (nodelet/nodelet)
planner_qp (nodelet/nodelet)
planner_trapezoidal (nodelet/nodelet)
rviz_node (rviz/rviz)
spawn_astrobee (astrobee_gazebo/spawn_model)
states (nodelet/nodelet)
sys_monitor (nodelet/nodelet)
auto-starting new master
process[master]: started with pid [12308]
ROS_MASTER_URI=http://10.42.0.31:11311
setting /run_id to b91cc490-e3c0-11ed-8836-e454e8d86199
process[rosout-1]: started with pid [12321]
started core service [/rosout]
process[global_transforms-2]: started with pid [12345]
process[rviz_node-3]: started with pid [12351]
process[gazebo-4]: started with pid [12364]
process[astrobee_state_publisher-5]: started with pid [12369]
process[spawn_astrobee-6]: started with pid [12370]
process[llp_gnc-7]: started with pid [12376]
process[llp_imu_aug-8]: started with pid [12393]
process[llp_monitors-9]: started with pid [12405]
process[llp_i2c-10]: started with pid [12406]
process[llp_serial-11]: started with pid [12424]
process[llp_pmc-12]: started with pid [12453]
process[llp_imu-13]: started with pid [12467]
process[llp_lights-14]: started with pid [12476]
process[imu_aug-15]: started with pid [12560]
process[ctl-16]: started with pid [12576]
process[fam-17]: started with pid [12596]
process[mlp_localization-18]: started with pid [12627]
process[mlp_graph_localization-19]: started with pid [12651]
process[mlp_vision-20]: started with pid [12684]
process[mlp_depth_cam-21]: started with pid [12710]
process[mlp_mapper-22]: started with pid [12718]
process[mlp_management-23]: started with pid [12729]
process[mlp_recording-24]: started with pid [12740]
process[mlp_monitors-25]: started with pid [12746]
process[mlp_communications-26]: started with pid [12766]
process[mlp_multibridge-27]: started with pid [12774]
process[mlp_serial-28]: started with pid [12787]
process[mlp_mobility-29]: started with pid [12801]
process[mlp_arm-30]: started with pid [12823]
process[mlp_dock-31]: started with pid [12857]
process[mlp_perch-32]: started with pid [12886]
process[mlp_vive-33]: started with pid [12896]
process[mlp_states-34]: started with pid [12912]
process[localization_manager-35]: started with pid [12915]
process[handrail_detect-36]: started with pid [12935]
process[depth_odometry_nodelet-37]: started with pid [12988]
process[graph_loc-38]: started with pid [13000]
process[image_sampler-39]: started with pid [13010]
process[mapper-40]: started with pid [13026]
process[planner_qp-41]: started with pid [13039]
process[choreographer-42]: started with pid [13068]
process[planner_trapezoidal-43]: started with pid [13099]
process[framestore-44]: started with pid [13126]
process[dock-45]: started with pid [13154]
process[arm-46]: started with pid [13180]
process[perch-47]: started with pid [13192]
process[states-48]: started with pid [13218]
process[executive-49]: started with pid [13237]
process[access_control-50]: started with pid [13272]
process[data_bagger-51]: started with pid [13333]
process[sys_monitor-52]: started with pid [13370]
process[imu_calibration-53]: started with pid [13403]
[spawn_astrobee-6] process has finished cleanly
log file: /home/mei/.ros/log/b91cc490-e3c0-11ed-8836-e454e8d86199/spawn_astrobee-6*.log
[imu_calibration-53] process has finished cleanly
log file: /home/mei/.ros/log/b91cc490-e3c0-11ed-8836-e454e8d86199/imu_calibration-53*.log
When running python3 ~/astrobee/src/tools/gds_helper/src/gds_simulator.py
I get the following output:
Here is the output from Logcat in Android Studio while the gds_simulator.py
script is trying to connect to the Guest Science Manager app:
1970-02-01 07:31:12.494 3065-3089/gov.nasa.arc.astrobee.android.gs.manager I/DefaultPublisher: Publisher registration failed: Publisher<PublisherDefinition<PublisherIdentifier<NodeIdentifier</guest_science_manager, http://hlp:39977/>, TopicIdentifier</rosout>>, Topic<TopicIdentifier</rosout>, TopicDescription<rosgraph_msgs/Log, acffd30cd6b6de30f120938c17c593fb>>>>
1970-02-01 07:31:27.520 3065-3091/gov.nasa.arc.astrobee.android.gs.manager E/Registrar: Exception caught while communicating with master.
org.ros.internal.node.xmlrpc.XmlRpcTimeoutException: org.apache.xmlrpc.client.TimingOutCallback$TimeoutException: No response after waiting for 10000 milliseconds.
at org.ros.internal.node.xmlrpc.XmlRpcClientFactory$1.invoke(XmlRpcClientFactory.java:140)
at java.lang.reflect.Proxy.invoke(Proxy.java:813)
at $Proxy0.registerPublisher(Unknown Source)
at org.ros.internal.node.client.MasterClient.registerPublisher(MasterClient.java:145)
at org.ros.internal.node.client.Registrar$1$1.call(Registrar.java:138)
at org.ros.internal.node.client.Registrar$1$1.call(Registrar.java:135)
at org.ros.internal.node.client.Registrar.callMaster(Registrar.java:111)
at org.ros.internal.node.client.Registrar.access$100(Registrar.java:51)
at org.ros.internal.node.client.Registrar$1.call(Registrar.java:135)
at org.ros.internal.node.client.Registrar$1.call(Registrar.java:132)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Caused by: org.apache.xmlrpc.client.TimingOutCallback$TimeoutException: No response after waiting for 10000 milliseconds.
at org.apache.xmlrpc.client.TimingOutCallback.waitForResponse(TimingOutCallback.java:77)
at org.ros.internal.node.xmlrpc.XmlRpcClientFactory$1.invoke(XmlRpcClientFactory.java:138)
at java.lang.reflect.Proxy.invoke(Proxy.java:813)
at $Proxy0.registerPublisher(Unknown Source)
at org.ros.internal.node.client.MasterClient.registerPublisher(MasterClient.java:145)
at org.ros.internal.node.client.Registrar$1$1.call(Registrar.java:138)
at org.ros.internal.node.client.Registrar$1$1.call(Registrar.java:135)
at org.ros.internal.node.client.Registrar.callMaster(Registrar.java:111)
at org.ros.internal.node.client.Registrar.access$100(Registrar.java:51)
at org.ros.internal.node.client.Registrar$1.call(Registrar.java:135)
at org.ros.internal.node.client.Registrar$1.call(Registrar.java:132)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:428)
at java.util.concurrent.FutureTask.run(FutureTask.java:237)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1133)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:607)
at java.lang.Thread.run(Thread.java:761)
Is it possible to send larger files to ground stations? I was looking through the guest science manager for a way to send files, but the functions in the StartGuestScienceService
class only allow messages under 2kB.
public void sendMsg(MessageType type, String topic, byte[] data) {
if (!this.mBound) {...}
else if (data.length > 2048) {
throw new RuntimeException("Data passed to sendData function is too big to send to ground. Must be 2K.");
} else {...}
}
I don't think these two lines are consistent [1]. If mCaptureCompleteTimestamp
has units of milliseconds, then we should multiply by 1000000 to get nanoseconds (instead of 1000).
[1]
I have an HLP development board and a prototype payload connected via USB. To establish communications I had to assign an IP address to the USB port on the HLP using adb
. Is there already a static IP defined for the USB ports, or should I provide the IP addresses I used in my documentation?
The espresso-core:2.0.2
dependency in the build.gradle
for the astrobee_android/guest_science
project needs to be changed to espresso-core:2.2.2
because the maven repository doesn't host 2.0.2 anymore.
dependencies {
compile fileTree(dir: 'libs', include: ['*.jar'])
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2') {
exclude group: 'com.android.support', module: 'support-annotations'
}
compile 'com.android.support:appcompat-v7:26.+'
testCompile 'junit:junit:4.12'
}
I was told to do this as to let you guys know where to find the project. You can look up NavCamApp or TTong868/NavCamApp, either one should do the trick. I explain/clarify things in the readme file, so hopefully that helps with any confusion you might have, and please excuse the small contribution I made to this project, Java is not my first language.
During the Soundsee data 3 activity, the sci cam stopped working after roughly 50 images. The apk was able to detect it but unable to recover. Usually a take picture or restart continuous picture taking fixes this but during the activity, the camera returned an error saying the camera was busy. Need to look into this and try to run the scicam during the next CM.
When running the gds_simulator.py
script, the prompt to "Press any key to continue..." will crash if user's don't enter a number. I am running the script with Python3 and Ubuntu 16.04.
The output when I press Enter without any input is shown below:
Here is the output if I enter a letter when at the prompt:
The eval()
function doesn't give me issues if the input is a number and I can proceed with using the script.
The Astrobee API file generation scripts use files from Astrobee common. The common repo has been integrated into the Astrobee repo so these scripts need to be updated to the newest file locations.
I have a problem connecting to GSM when I run gds_simulator.py. I already confirmed that android emulator and Astrobee simulator was running. GSM also seems to run normally in android emulator. I try to restart the GSM but still no luck. I already make sure that I was able to ping both from adb shell and ubuntu for llp and hlp. The robot can also be controlled from teleop but there seems to be an error after I run Astrobee simulator. Is this what causing the issue to connect to GSM? Any help would be much appreciated. Thank you
I created an AVD for guest science apps by following the emulator instructions, and my AVD seems to be failing to launch when the launch_emulator.sh
script boots it. I was able to boot the AVD using android studio and test it out, so I am not sure why the script is having trouble running the AVD.
mei@mei-Dell:~/astrobee_android/scripts$ export ANDROID_PATH=$HOME/astrobee_android
mei@mei-Dell:~/astrobee_android/scripts$ export EMULATOR=$HOME/Android/Sdk/tools/emulator
mei@mei-Dell:~/astrobee_android/scripts$ $EMULATOR -list-avds
Nexus_5_API_25
Nexus_5_API_25_2
mei@mei-Dell:~/astrobee_android/scripts$ export AVD=Nexus_5_API_25_2
The AVD is used on line 104 of the script as shown below, and results in a segmentation fault. I also tried executing this command in a separate terminal with literal paths and got the same results.
./launch_emulator.sh: line 104: 3249 Segmentation fault (core dumped) "$EMULATOR" -avd "${AVD}" -no-snapshot -writable-system -qemu -device virtio-net-pci,netdev=net1 -netdev tap,id=net1,script=no,downscript=no,ifname=tap0
The full error output is shown below. Some of the error output mention issues with Vulkan libraries, and I am using an integrated Intel chip instead of a graphics card.
mei@mei-Dell:~/astrobee_android/scripts$ ./launch_emulator.sh
Please type the sudo password for the user mei. If sudo access is already granted, we will continue
[sudo] password for mei:
INFO | Storing crashdata in: /tmp/android-root/emu-crash.db, detection is enabled
INFO | Duplicate loglines will be removed, if you wish to see each indiviudal line launch with the -log-nofilter flag.
WARNING | System image is writable
WARNING | encryption is off
INFO | Warning: QStandardPaths: wrong ownership on runtime directory /run/user/1000, 1000 instead of 0 ((null):0, (null))
INFO | Warning: QXcbIntegration: Cannot create platform OpenGL context, neither GLX nor EGL are enabled ((null):0, (null))
INFO | Warning: QMetaObject::connectSlotsByName: No matching signal for on_new_posture_requested(int) ((null):0, (null))
INFO | Warning: QMetaObject::connectSlotsByName: No matching signal for on_dismiss_posture_selection_dialog() ((null):0, (null))
INFO | Warning: QMetaObject::connectSlotsByName: No matching signal for on_new_resizable_requested(PresetEmulatorSizeType) ((null):0, (null))
INFO | Warning: QMetaObject::connectSlotsByName: No matching signal for on_dismiss_resizable_dialog() ((null):0, (null))
queryCoreProfileSupport: swap interval not found
failed to create drawable
failed to create drawable
failed to create drawable
failed to create drawable
failed to create drawable
failed to create drawable
failed to create drawable
failed to create drawable
WARNING | cannot add library /home/mei/Android/Sdk/emulator/qemu/linux-x86_64/lib64/vulkan/libvulkan.so: failed
INFO | Warning: QCssParser::parseHexColor: Unknown color name '#FFFFFFs' ((null):0, (null))
INFO | added library /home/mei/Android/Sdk/emulator/lib64/vulkan/libvulkan.so
WARNING | *** No gRPC protection active, consider launching with the -grpc-use-jwt flag.***
INFO | Started GRPC server at 127.0.0.1:8554, security: Local, auth: none
INFO | Advertising in: /run/user/1000/avd/running/pid_3249.ini
INFO | Setting display: 0 configuration to: 1080x1920, dpi: 480x480
INFO | Warning: QImage::pixel: coordinate (1370,0) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,1) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,2) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,3) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,4) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,5) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,6) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,7) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,8) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,9) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,10) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,11) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,12) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,13) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,14) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,15) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,16) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,17) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,18) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,19) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,20) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,21) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,22) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,23) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,24) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,25) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,26) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,27) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,28) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,29) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,30) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,31) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,32) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,33) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,34) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,35) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,36) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,37) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,38) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,39) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,40) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,41) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,42) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,43) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,44) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,45) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,46) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,47) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,48) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,49) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,50) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,51) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,52) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,53) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,54) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,55) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,56) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,57) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,58) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,59) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,60) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,61) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,62) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,63) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,64) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,65) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,66) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,67) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,68) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,69) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,70) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,71) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,72) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,73) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,74) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,75) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,76) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,77) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,78) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,79) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,80) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,81) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,82) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,83) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,84) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,85) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,86) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,87) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,88) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,89) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,90) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,91) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,92) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,93) out of range ((null):0, (null))
INFO | Warning: QImage::pixel: coordinate (1370,94) out of range ((null):0, (null))
./launch_emulator.sh: line 104: 3249 Segmentation fault (core dumped) "$EMULATOR" -avd "${AVD}" -no-snapshot -writable-system -qemu -device virtio-net-pci,netdev=net1 -netdev tap,id=net1,script=no,downscript=no,ifname=tap0
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.